Ubuntu升级后PHP文件未被Apache解析,直接显示源码原因排查
Ubuntu 18.04升级到22.04后Apache不解析PHP的原因及解决办法
出现这种问题,基本是升级过程中Apache的PHP相关配置被重置、模块未正确启用导致的,以下是常见原因和对应的解决步骤:
1. PHP模块未启用
升级后Apache不会自动启用新版本的PHP模块,需要手动操作:
- 启用PHP 8.1模块:
sudo a2enmod php8.1 - 重启Apache生效:
sudo systemctl restart apache2
2. Apache的PHP处理规则丢失
升级可能重置了Apache的配置,导致.php文件的处理规则被清除:
- 打开PHP模块配置文件检查:
sudo nano /etc/apache2/mods-available/php8.1.conf - 确保文件中包含以下规则,没有的话手动添加:
<FilesMatch ".+\.ph(ar|p|tml)$"> SetHandler application/x-httpd-php </FilesMatch> - 保存后重启Apache。
3. PHP-FPM配置异常(若使用FPM模式)
如果之前用PHP-FPM运行PHP,升级后可能出现服务未启动或Apache代理配置丢失:
- 检查PHP-FPM状态:
sudo systemctl status php8.1-fpm - 若未启动,启动并设置开机自启:
sudo systemctl start php8.1-fpm sudo systemctl enable php8.1-fpm - 启用Apache代理模块:
sudo a2enmod proxy proxy_fcgi - 检查站点配置文件(比如
/etc/apache2/sites-available/your-site.conf),确保包含FPM代理规则:<FilesMatch ".+\.ph(ar|p|tml)$"> SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost" </FilesMatch> - 重启Apache。
4. 站点配置文件被覆盖
升级时系统可能会备份原有站点配置(后缀为.dpkg-old),并使用默认配置替换,而默认配置没有PHP解析规则:
- 查看是否有备份文件:
ls /etc/apache2/sites-available/*.dpkg-old - 如果存在,将备份中的PHP相关配置复制到当前站点.conf文件中,或者直接恢复备份(注意适配新环境),之后重启Apache。
5. MIME类型配置错误
Apache的MIME类型配置可能丢失了PHP的关联:
- 打开MIME配置文件:
sudo nano /etc/apache2/mods-available/mime.conf - 确认存在
AddType application/x-httpd-php .php,没有则添加,保存后重启Apache。
内容的提问来源于stack exchange,提问作者stighy
相关产品推荐
相关产品推荐

