通过make安装PHP后如何切换版本?
解决Debian 10下PHP版本切换无效的问题
1. 定位当前php命令的实际路径
先确认系统调用的php到底指向哪个文件,执行:
which php
或
whereis php
如果输出是/usr/local/bin/php,说明源码编译的PHP安装在/usr/local/bin目录,该路径在系统PATH中的优先级大概率高于update-alternatives管理的/usr/bin/php,因此即使切换备选版本,系统仍会优先调用源码安装的PHP。
2. 将源码编译的PHP纳入update-alternatives管理
手动把源码安装的PHP和其他版本注册到备选系统中,假设源码PHP路径为/usr/local/bin/php,系统包安装的新版本PHP路径为/usr/bin/php8.1,执行:
sudo update-alternatives --install /usr/bin/php php /usr/local/bin/php 100 sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 90
末尾数字为优先级,数值越高越优先。完成注册后执行切换:
sudo update-alternatives --config php
输入对应版本的编号后,再次执行php -version验证结果。
3. 调整PATH环境变量优先级
若不想依赖update-alternatives,可直接调整PATH顺序,让系统PHP所在的/usr/bin路径优先级高于/usr/local/bin:
- 临时生效(仅当前shell会话):
export PATH=/usr/bin:$PATH
- 永久生效:编辑
~/.bashrc或/etc/profile文件,添加上述export命令,执行source ~/.bashrc或重新登录shell即可。
4. 验证切换结果
执行以下命令确认版本和路径是否匹配预期:
php -version which php
额外注意事项
- 源码编译新版本PHP时,建议通过
./configure --prefix=/usr/local/phpX.X指定明确安装路径,方便后续管理。 - 若CLI版本切换正常,但Web服务(如Nginx/Apache)的PHP版本未变化,需单独配置对应服务的PHP-FPM或模块路径。
内容的提问来源于stack exchange,提问作者Ben I
相关产品推荐
相关产品推荐

