Apache 无法载入 PHP 通常是由于配置问题或缺少必要的模块。以下是一些常见的解决步骤:
首先,确保 PHP 已经正确安装在你的系统上。你可以通过以下命令检查 PHP 是否已安装:
php -v
如果 PHP 已安装,你将看到 PHP 的版本信息。如果没有安装,请根据你的操作系统安装 PHP。
Apache 需要通过模块来加载 PHP。你需要安装 libapache2-mod-php
(适用于 Debian/Ubuntu)或 php-apache
(适用于 CentOS/RHEL)模块。
Debian/Ubuntu:
sudo apt-get install libapache2-mod-php
CentOS/RHEL:
sudo yum install php php-apache
安装完模块后,你需要启用它。
Debian/Ubuntu:
sudo a2enmod php7.x # 将 7.x 替换为你安装的 PHP 版本
CentOS/RHEL:
在 /etc/httpd/conf/httpd.conf
或 /etc/apache2/apache2.conf
中添加以下行:
LoadModule php7_module modules/libphp7.so
确保 Apache 配置文件中正确设置了 PHP 文件的处理方式。通常,你需要在 Apache 配置文件中添加以下内容:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
在完成上述步骤后,重启 Apache 以使更改生效。
Debian/Ubuntu:
sudo systemctl restart apache2
CentOS/RHEL:
sudo systemctl restart httpd
创建一个简单的 PHP 文件来测试 Apache 是否正确加载了 PHP。例如,在 /var/www/html/
目录下创建一个 info.php
文件:
<?php
phpinfo();
?>
然后在浏览器中访问 http://your-server-ip/info.php
,你应该看到 PHP 的信息页面。
如果仍然无法加载 PHP,检查 Apache 的错误日志文件以获取更多信息。日志文件通常位于 /var/log/apache2/error.log
(Debian/Ubuntu)或 /var/log/httpd/error_log
(CentOS/RHEL)。
如果你使用的是 SELinux 或 AppArmor,确保它们没有阻止 Apache 加载 PHP 模块。你可以暂时禁用它们来测试是否是这个问题。
禁用 SELinux:
sudo setenforce 0
禁用 AppArmor:
sudo systemctl stop apparmor
确保 PHP 的配置文件(通常是 /etc/php/7.x/apache2/php.ini
)中没有错误配置。
确保 PHP 文件和 Apache 的根目录具有正确的权限,以便 Apache 可以读取和执行这些文件。
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
通过以上步骤,你应该能够解决 Apache 无法加载 PHP 的问题。如果问题仍然存在,请提供更多的错误信息以便进一步诊断。