CentOS7 Apache无法启用指定PHP版本求助
CentOS7下Apache无法加载PHP 8.1,始终使用PHP 7.2的解决方法
问题情况
- 本地CLI执行
php -v显示当前PHP版本为8.1.16,但Apache服务器始终加载PHP 7.2,此前一直使用PHP 7.4 - 夜间更新时,仅更新了包:
php-pear.noarch 1:1.10.13-5.el7.remi remi-php72 - 仅找到Apache加载的PHP模块为
/etc/httpd/modules/librh-php72-php7.so,对应配置文件conf.modules.d/15-rh-php72-php.conf,未找到其他PHP版本的模块路径
已安装PHP相关包列表
执行sudo yum list installed | grep php输出如下:
gd3php.x86_64 2.3.3-7.el7.remi @remi-safe oniguruma5php.x86_64 6.9.8-1.el7.remi @remi-safe php.x86_64 8.1.16-1.el7.remi @remi-php81 php-bcmath.x86_64 8.1.16-1.el7.remi @remi-php81 php-cli.x86_64 8.1.16-1.el7.remi @remi-php81 php-common.x86_64 8.1.16-1.el7.remi @remi-php81 php-devel.x86_64 8.1.16-1.el7.remi @remi-php81 php-fedora-autoloader.noarch 1.0.1-2.el7 @epel php-fpm.x86_64 8.1.16-1.el7.remi @remi-php81 php-gd.x86_64 8.1.16-1.el7.remi @remi-php81 php-gmp.x86_64 8.1.16-1.el7.remi @remi-php81 php-intl.x86_64 8.1.16-1.el7.remi @remi-php81 php-kolab-net-ldap3.noarch 1.0.7-2.el7 @epel php-ldap.x86_64 8.1.16-1.el7.remi @remi-php81 php-mbstring.x86_64 8.1.16-1.el7.remi @remi-php81 php-mysqlnd.x86_64 8.1.16-1.el7.remi @remi-php81 php-pdo.x86_64 8.1.16-1.el7.remi @remi-php81 php-pear.noarch 1:1.10.13-5.el7.remi @remi-php72 php-pear-Auth-SASL.noarch 1.0.6-5.el7 @epel php-pear-Mail-Mime.noarch 1.10.2-1.el7 @epel php-pear-Net-IDNA2.noarch 0.1.1-10.el7 @epel php-pear-Net-LDAP2.noarch 2.1.0-1.el7 @epel php-pear-Net-SMTP.noarch 1.7.3-1.el7 @epel php-pear-Net-Sieve.noarch 1.3.4-4.el7 @epel php-pear-Net-Socket.noarch 1.0.14-1.el7 @epel php-pecl-imagick-im6.x86_64 3.7.0-1.el7.remi.8.1 @remi-php81 php-pecl-mcrypt.x86_64 1.0.5-1.el7.remi.8.1 @remi-php81 php-pecl-zip.x86_64 1.21.1-1.el7.remi.8.1 @remi-php81 php-process.x86_64 8.1.16-1.el7.remi @remi-php81 php-pspell.x86_64 8.1.16-1.el7.remi @remi-php81 php-sodium.x86_64 8.1.16-1.el7.remi @remi-php81 php-xml.x86_64 8.1.16-1.el7.remi @remi-php81 php72.x86_64 2.0-1.el7.remi @remi-safe php72-php-cli.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-common.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-fpm.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-gd.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-json.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-mbstring.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-mysqlnd.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-opcache.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-pdo.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-xml.x86_64 7.2.34-16.el7.remi @remi-safe php72-php-xmlrpc.x86_64 7.2.34-16.el7.remi @remi-safe php72-runtime.x86_64 2.0-1.el7.remi @remi-safe php74.x86_64 1.0-3.el7.remi @remi-safe php74-php-cli.x86_64 7.4.33-4.el7.remi @remi-safe php74-php-common.x86_64 7.4.33-4.el7.remi @remi-safe php74-php-json.x86_64 7.4.33-4.el7.remi @remi-safe php74-runtime.x86_64 1.0-3.el7.remi @remi-safe rh-php72.x86_64 1-2.el7 @centos-sclo-rh rh-php72-php.x86_64 7.2.24-1.el7 installed rh-php72-php-cli.x86_64 7.2.24-1.el7 installed rh-php72-php-common.x86_64 7.2.24-1.el7 installed rh-php72-php-gd.x86_64 7.2.24-1.el7 installed rh-php72-php-intl.x86_64 7.2.24-1.el7 installed rh-php72-php-json.x86_64 7.2.24-1.el7 installed rh-php72-php-mbstring.x86_64 7.2.24-1.el7 installed rh-php72-php-mysqlnd.x86_64 7.2.24-1.el7 installed rh-php72-php-opcache.x86_64 7.2.24-1.el7 installed rh-php72-php-pdo.x86_64 7.2.24-1.el7 installed rh-php72-php-pear.noarch 1:1.10.5-1.el7 @centos-sclo-rh rh-php72-php-pecl-apcu.x86_64 5.1.12-1.el7 @centos-sclo-rh rh-php72-php-process.x86_64 7.2.24-1.el7 installed rh-php72-php-xml.x86_64 7.2.24-1.el7 installed rh-php72-php-zip.x86_64 7.2.24-1.el7 installed rh-php72-runtime.x86_64 1-2.el7 @centos-sclo-rh sclo-php72-php-pecl-igbinary.x86_64 2.0.8-1.el7 @centos-sclo-sclo sclo-php72-php-pecl-imagick.x86_64 3.4.4-3.el7 @centos-sclo-sclo sclo-php72-php-pecl-redis4.x86_64 4.3.0-1.el7 @centos-sclo-sclo
解决步骤
1. 安装PHP 8.1的Apache模块
系统中已安装PHP 8.1的CLI组件,但缺少对应的Apache模块,执行以下命令安装:
sudo yum install php81-php-apache
安装完成后,模块文件路径为/opt/remi/php81/root/usr/lib64/httpd/modules/libphp81.so。
2. 禁用PHP 7.2的Apache模块配置
将rh-php72的配置文件重命名为禁用状态:
sudo mv /etc/httpd/conf.modules.d/15-rh-php72-php.conf /etc/httpd/conf.modules.d/15-rh-php72-php.conf.disabled
3. 确认PHP 8.1的配置已启用
安装php81-php-apache后,会自动生成/etc/httpd/conf.modules.d/15-php81-php.conf配置文件,若未生成,手动创建并添加以下内容:
LoadModule php_module /opt/remi/php81/root/usr/lib64/httpd/modules/libphp81.so <IfModule php_module> AddHandler php81-php .php <FilesMatch \.php$> SetHandler php81-php </FilesMatch> php_value session.save_handler "files" php_value session.save_path "/opt/remi/php81/root/var/lib/php/session" </IfModule>
4. 清理冗余PHP版本(可选)
若不需要保留PHP 7.2、7.4版本,可卸载避免后续冲突:
# 卸载rh-php72及相关组件 sudo yum remove rh-php72* sclo-php72* # 卸载remi仓库的php72组件 sudo yum remove php72* # 卸载php74组件(按需执行) sudo yum remove php74*
5. 重启Apache服务
sudo systemctl restart httpd
6. 验证PHP版本
在网站根目录(如/var/www/html/)创建info.php文件:
<?php phpinfo(); ?>
通过浏览器访问该文件,确认页面顶部显示的PHP版本为8.1.16。
内容的提问来源于stack exchange,提问作者Meisterzunge
相关产品推荐
相关产品推荐

