Debian Buster环境下Apache降级PHP至7.4后仍显示8.1版本的问题求助
看起来你已经完成了不少核心操作——切换了CLI默认PHP版本、启用了php7.4模块并禁用了其他版本,但Apache和Nextcloud还是认成8.1,这种情况大概率是配置残留或者服务没彻底生效导致的,咱们一步步来排查解决:
先彻底重启Apache,别只reload
很多时候重载配置(sudo systemctl reload apache2)不会让新的PHP模块完全生效,必须彻底重启服务:sudo systemctl restart apache2重启后再刷新phpinfo页面或者Nextcloud试试。
检查虚拟主机的单独PHP配置
如果你的Nextcloud或者其他站点用了单独的虚拟主机配置,可能里面硬指定了PHP8.1的FPM套接字。去/etc/apache2/sites-available/目录下打开对应站点的.conf文件,查找类似这样的代码:<FilesMatch \.php$> SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost" </FilesMatch>如果找到,把
php8.1-fpm.sock改成php7.4-fpm.sock,保存后重启Apache。确认PHP-FPM服务状态
如果你用的是PHP-FPM模式(现在很多Apache配置都会用这个),得确保php7.4-fpm在运行,同时停掉旧的8.1服务:# 检查php7.4-fpm状态 sudo systemctl status php7.4-fpm # 如果没运行就启动 sudo systemctl start php7.4-fpm # 设置开机自启 sudo systemctl enable php7.4-fpm # 停止php8.1-fpm服务 sudo systemctl stop php8.1-fpm核对phpinfo的配置路径
打开你生成的phpinfo页面,重点看这两个字段:Loaded Configuration File:应该指向/etc/php/7.4/apache2/php.iniAdditional .ini files parsed:应该是/etc/php/7.4/apache2/conf.d/下的文件
如果显示的是8.1的路径,说明Apache还在加载旧版本的配置,可能是某个全局配置没改对,需要检查/etc/apache2/apache2.conf里有没有硬编码的PHP版本配置。
清理Nextcloud缓存
Nextcloud有时候会缓存环境信息,即使PHP版本已经切换,它可能还没更新。可以用命令行修复并清理缓存(先切换到Nextcloud的安装目录,比如/var/www/nextcloud):sudo -u www-data php occ maintenance:repair sudo -u www-data php occ maintenance:mode --off
按照这些步骤排查后,应该就能让Apache和Nextcloud正确识别PHP7.4版本了。如果还是有问题,可以再检查一下/etc/apache2/mods-available/里有没有残留的php8.1配置文件,确保已经完全禁用。
备注:内容来源于stack exchange,提问作者droid001

