You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 23下PHP 8.1文件在浏览器显示为文本的问题求助

解决Apache无法解析PHP文件、显示源码且a2enmod提示模块不存在的问题

步骤1:确认PHP模块文件是否存在

先检查Apache模块目录中是否有PHP8.1的核心模块文件:

ls /usr/lib/apache2/modules/ | grep php

如果输出里没有libphp8.1.so,说明安装不完整,执行彻底卸载重装:

sudo apt purge libapache2-mod-php8.1
sudo apt autoremove
sudo apt install libapache2-mod-php8.1

步骤2:手动创建并启用PHP模块配置(自动生成失败时)

若模块文件存在但a2enmod php8.1报错,手动生成模块配置文件:

  1. 创建/etc/apache2/mods-available/php8.1.load,写入:
LoadModule php8_module /usr/lib/apache2/modules/libphp8.1.so
  1. 创建/etc/apache2/mods-available/php8.1.conf,写入标准解析规则:
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
    SetHandler application/x-httpd-php-source
    Require all denied
</FilesMatch>
<FilesMatch "^\.ph(p[3457]?|t|tml)$">
    Require all denied
</FilesMatch>
  1. 再次尝试启用模块:
sudo a2enmod php8.1

步骤3:验证MIME类型配置

确保Apache能识别.php文件并交给PHP处理:

  • 检查/etc/apache2/mime.types是否包含一行:
    application/x-httpd-php php
    
  • 若缺失,手动添加后保存。

步骤4:检查Apache MPM模式(关键坑点)

libapache2-mod-php8.1仅支持prefork MPM模式,若当前使用event或worker模式会导致模块加载失败:

  1. 查看当前MPM模式:
apache2ctl -M | grep mpm
  1. 若为mpm_event或mpm_worker,切换到prefork:
sudo a2dismod mpm_event mpm_worker
sudo a2enmod mpm_prefork

步骤5:重启服务并验证

执行重启命令使配置生效:

sudo systemctl restart apache2

创建测试文件/var/www/html/info.php,内容:

<?php phpinfo(); ?>

在浏览器访问该文件,若显示PHP信息页面则问题解决。

内容的提问来源于stack exchange,提问作者Ruchita Sheth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:24:54