Fedora Linux Apache服务器中PHP文件无法正常解析问题求助
环境与操作步骤
在Fedora Linux机器上安装Apache Web服务器及PHP,执行命令:
sudo dnf install httpd sudo dnf install php php-mysqlnd php-pdo php-gd php-mbstring sudo systemctl start httpd sudo systemctl enable httpd
为验证服务器状态,创建测试文件/var/www/html/info.php,内容如下:
<?php echo "Hello, World!"; ?>
问题现象
Web服务器运行正常,但访问http://localhost/info.php时,/var/www/html/info.php被当作可下载文件直接下载,未解析执行并显示"Hello, World!"。
已尝试的无效操作
修改/etc/httpd/conf/httpd.conf文件,在<IfModule mime_magic_module>块内添加以下配置,但未解决问题:
<IfModule mime_magic_module> # # The mod_mime_magic module allows the server to use various hints from the # contents of the file itself to determine its type. The MIMEMagicFile # directive tells the module where the hint definitions are located. # MIMEMagicFile conf/magic LoadModule php7_module modules/libphp7.so AddType application/x-httpd-php .php .php3 .phtml .html AddType application/x-httpd-php-source .phps </IfModule>
1. 确认PHP模块的实际路径
Fedora中PHP的Apache模块路径并非固定为modules/libphp7.so,先检查系统中实际的PHP模块文件:
ls /usr/lib64/httpd/modules/ | grep php
通常会输出类似libphp8.2.so的文件名,后续配置需使用实际文件名。
2. 调整模块加载位置
LoadModule指令不应放在<IfModule mime_magic_module>块内,需移至httpd.conf的全局配置区域:
LoadModule php<version>_module /usr/lib64/httpd/modules/libphp<version>.so
将<version>替换为实际的PHP版本号(如8.2)。
3. 启用系统默认的PHP配置
Fedora安装PHP后,会自动在/etc/httpd/conf.d/目录生成php.conf文件,该文件已包含正确的AddType和模块加载配置。检查httpd.conf中是否包含该目录的引用:
Include conf.d/*.conf
若存在此配置,无需手动在主配置中添加PHP相关规则。
4. 重启Apache服务
修改配置后必须重启服务才能生效:
sudo systemctl restart httpd
5. 验证模块加载状态
执行以下命令确认PHP模块已成功加载:
httpd -M | grep php
若输出包含php<version>_module (shared),说明模块加载正常。
内容的提问来源于stack exchange,提问作者Artem Tartakovskiy

