PHP 5.x 安装扩展前必须确认三件事:当前PHP版本、是否使用已弃用高危扩展(如mcrypt)、扩展源是否可信;pecl安装需指定对应phpize路径;php.ini中extension需用绝对路径并验证加载。
PHP 5.x 安装扩展前必须确认的三件事
PHP 5 已于 2018 年彻底停止维护,官方不再提供任何安全更新。这意味着:你装的不是“扩展”,而是潜在的漏洞载体。安装前务必确认:
– 当前 PHP 版本(用 php -v 查,如 PHP 5.6.40)
– 是否仍在使用已知存在远程代码执行风险的旧扩展(如 php-mcrypt、php-ereg,它们在 PHP 7+ 中已被移除且无替代补丁)
– 扩展源是否来自可信编译包(如 php5-dev + 源码编译)而非第三方不可信的二进制包
用 pecl 安装扩展时,PHP 5 必须手动指定 phpize 路径
PHP 5 的 pecl 命令默认调用系统 PATH 中第一个 phpize,而老系统常同时存在 PHP 5 和 PHP 7 的开发工具。不指定路径会导致编译失败或扩展加载后段错误。
正确做法是先定位对应版本的工具:
which phpize5 # 或 /usr/bin/phpize5 # Debian/Ubuntu 常见路径 /usr/local/php5/bin/phpize # 自编译常见路径
然后显式调用:
/usr/bin/phpize5 && ./configure --with-php-config=/usr/bin/php-config5 && make && sudo make install
注意:--with-php-config 参数必须与 phpize 版本严格匹配,否则 extension_dir 写入错误路径,php -m 看不到扩展。
立即学习“PHP免费学习笔记(深入)”;
php.ini 中 extension=xxx.so 的写法有兼容陷阱
PHP 5.3+ 支持直接写扩展名(如 extension=redis.so),但部分老旧发行版(如 CentOS 6 默认源)的 PHP 5.3.3 仍要求绝对路径: