PHP拓展怎么安装_跨Linux发行版装拓展命令不一样吗【指南】

2次阅读

php拓展安装本质是编译或包管理:debian/ubuntu用apt装php8.2-redis等精确命名包,rhel系用dnf install php-pecl-redis并需epel-release;pecl install需php-devel等编译环境,安装后须正确配置extension=redis并重启php-fpm。

PHP拓展怎么安装_跨Linux发行版装拓展命令不一样吗【指南】

PHP拓展安装本质是编译或包管理两件事

装PHP拓展不外乎两种路径:用系统包管理器直接装预编译好的二进制(快、省事、但版本常滞后),或用 pecl 下载源码后用 phpize + configure + make 编译(灵活、版本新,但依赖开发工具链)。发行版差异主要体现在包管理命令和拓展包命名上,不是PHP本身逻辑不同。

Debian/Ubuntu 用 apt,拓展名带 php– 前缀

比如装 redis 拓展,先确认PHP版本:

php -v

假设是 PHP 8.2,则运行:

sudo apt update && sudo apt install php8.2-redis

常见坑:

立即学习PHP免费学习笔记(深入)”;

  • php-redis 是旧版通用包名(对应系统默认PHP),多PHP版本共存时必须写全 php8.2-redis 等精确名称,否则可能装错版本或报“未找到”
  • 装完需手动启用:检查 /etc/php/8.2/cli/conf.d/20-redis.ini 是否存在,内容是否为 extension=redis
  • Web服务(如apache/nginx)需重启对应PHP-FPM进程:sudo systemctl restart php8.2-fpm

RHEL/centos/Rocky/Almalinux 用 dnf 或 yum,拓展名带 php- 和版本号后缀

以 Rocky Linux 9 + PHP 8.1 为例:

sudo dnf install php-pecl-redis

注意点:

  • CentOS 7/8 默认仓库中 php-pecl-* 是主流命名,但部分拓展(如 igbinary)需先启用 EPEL:sudo dnf install epel-release
  • RHEL系默认不自带 php-devel,若后续要用 pecl install,必须先装:sudo dnf install php-devel gcc make
  • 配置文件位置通常是 /etc/php.d/redis.ini,装完不用手动加 extension=,但要确认该目录被 php.ini 包含(有 include_path = "/etc/php.d/*.ini"

用 pecl install 跨发行版都一样,但前提是你有编译环境

只要系统装了 php-develgccmake 和对应PHP的头文件,pecl install 就能跑通:

pecl install redis

关键细节:

  • 它会自动调用 phpize,所以 phpize 必须可用且指向目标PHP版本(检查 which phpizephpize --version
  • 安装完提示 “You should add extension=redis to php.ini”,别直接抄——先查 php --ini 输出的主配置路径,再编辑那个 php.ini 或在 conf.d/ 下建新ini文件
  • 某些拓展(如 grpcprotobuf)依赖额外系统库,pecl install 会失败并提示缺 libgrpc.so 等,得先 dnf install grpc-develapt install libgrpc-dev

真正麻烦的从来不是命令本身,而是搞不清当前PHP是系统包装的、SCL装的、还是自己源码编译的——这决定了 phpize 路径、头文件位置、以及 extension_dir 配置值。动手前先跑一遍 php-config --extension-dirphp-config --includes,比硬试三次更省时间。

text=ZqhQzanResources