安装PHP扩展需确保phpize和php-config与目标PHP版本匹配,正确指定路径并配置对应php.ini,多版本共存时须区分CLI/FPM配置及service名称。
PHP 扩展怎么装?先看
和
对不对路
装扩展失败,八成是
和目标 PHP 版本不匹配。比如系统默认是 PHP 8.1,但你想给 PHP 7.4 装
,却直接运行了
(它调用的是 8.1 的头文件),编译出来的
文件加载时会报
这类符号错误。
实操要点:
确认目标 PHP 路径:
或
用对应版本的
:比如
配置时指定
:
后,检查生成的
路径是否被
包含
多版本共存下,
别搞混了
不同 PHP 版本的配置文件完全独立,
显示的不是“主配置”,而是当前 CLI 使用的那个。Web SAPI(如 FPM)用的又是另一套 —— 比如
和
是两份。
容易踩的坑:
立即学习
“
PHP免费学习笔记(深入)
”;
在
里看到扩展,但 Web 页面
不显示 → 查 FPM 的
,不是 CLI 的
改了
,但 Nginx 走的是
→ 得去改
扩展启用写成了
,但没确认
真正在哪个目录 → 先查
值,再
确认路径
用
装拓展?必须绑定具体 PHP 版本
默认走系统默认 PHP,多版本环境下极易装错。不能只跑
,得让它知道你要配给谁。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
正确做法:
临时切换环境变量:
或指定
和
:
装完后检查
是否落在对应
下,再手动在该版本的
里加
注意:PECL 包可能不兼容老版本 PHP(比如
1.60+ 不支持 PHP 7.2),要查对应
里的
限制
FPM 多池 + 多版本共存,扩展加载得靠
如果一个 Nginx server 块想用 PHP 7.4,另一个用 8.2,且都走 FPM,就不能只靠全局
控制扩展 —— 比如你只想让 API 池启用
,管理后台池禁用,就得在 pool 配置里干预。
关键配置项:
在
里加:
禁用某个扩展:
注意:
会覆盖
中同名设置,且子进程无法再修改
改完必须
(不是 restart),否则新池配置不生效
最常被忽略的是:不同 PHP 版本的 FPM service 名字不同(
、
),reload 错了等于白配。
phpizephp-configphpizeredisphpize.soundefined symbol: zend_string_initwhich php/opt/php/7.4/bin/php -vphpize/opt/php/7.4/bin/phpizephp-config./configure --with-php-config=/opt/php/7.4/bin/php-configmake && make install.soextension_dirphp.iniphp --ini/etc/php/7.4/fpm/php.ini/etc/php/8.2/fpm/php.iniphp -mphpinfo()php.ini/etc/php/8.2/cli/php.ini8.2-fpm/etc/php/8.2/fpm/php.iniextension=redis.soredis.soextension_dirlspeclpecl installpecl install xdebugPATH=/opt/php/7.4/bin:$PATH pecl install xdebugphp_iniphp_configpecl install -c /opt/php/7.4/etc/php.ini -f xdebug.soextension_dirphp.iniextension=xdebug.sogrpcpackage.xmlphp-minphp_admin_valuephp.iniopcache/etc/php/7.4/fpm/pool.d/api.confphp_admin_value[extension] = opcache.sophp_admin_flag[opcache.enable] = offphp_admin_valuephp.inisystemctl reload php7.4-fpmphp7.4-fpmphp8.2-fpm