Ubuntu pecl 多版本 PHP 安装扩展,避免冲突
不知道有人没有遇到过,pecl
在给多版本 PHP 安装同一个扩展的时候会提示重复安装。如下记录解决方法。
1. 安装扩展
sudo pecl -d php_suffix=8.0 install <package>
我理解
-d php_suffix=
是指定php
命令的后缀,例如-d php_suffix=8.0
则为php8.0
2. 卸载扩展
sudo pecl uninstall -r <package>
加上
-r
不会删除已安装的好扩展.so
文件
重复以上步骤,再次安装其他 PHP 版本相同扩展就可以正常安装成功了!
3. 一键启用扩展
在目录下 /etc/php/x.x/mods-available
(x.x
为 php 版本号目录) 创建 ini 文件,例如 yaf.ini
并编辑内容如下
extension=yaf.so
通过执行命令来一键启用 cli 和 fpm 版本扩展
sudo phpenmod -v <php-version> <extension-name>
其中
<php-version>
为 php 版本(单版本可以忽略 -v 参数),<extension-name>
为扩展名
例如,要启用 php8.0 的 yaf 扩展:
sudo phpenmod -v 8.0 yaf
4. 一键禁用扩展
通过执行命令来一键启用 cli 和 fpm 版本扩展
sudo phpdismod -v <php-version> <extension-name>
其中
<php-version>
为 php 版本(单版本可以忽略 -v 参数),<extension-name>
为扩展名
例如,要禁用 php8.0 的 yaf 扩展:
sudo phpdismod -v 8.0 yaf
8.0
本作品采用《CC 协议》,转载必须注明作者和本文链接
用ondrej的三方源
ubuntu:
sudo apt-add-repository ppa:ondrej/php
debian:
apt-get update之后
只需要
apt-get install php[7.2|8.0|7.4|8.1]-[php|fpm]
就能安装指定版本的php和fpmapt-get install php[version]-ext_name
可以安装指定版本php的指定扩展(如果有支持的话)CentOS/Fedora/AlmaLinux/RockyLinux/OracleLinux等RPMs系的可以用remi的源。大同小异。
注意目标版本 PHP 引用即可。
假设你要给 php8.1 安装扩展,其路径为
/usr/local/php/8.1
, 将此目录注入当前 shell 的环境变量:重点是让 pecl 找到正确的 php-config。
mark一下