如何解决 Apache 直接显示 PHP 源码问题 ?

在设置 web 服务器时,您可能会遇到浏览器直接显示原始 PHP 代码的问题。这通常意味着您的服务器没有正确处理 PHP 文件。让我们看看为什么会发生这种情况,以及如何在基于 Debian 和 RHEL 的系统上修复它。

可能的原因

  • PHP 模块没有在 Apache 中正确安装或配置。
  • Apache 配置中 .php 文件没有链接到 PHP 模块。
  • .htaccess 文件中有错误。

1. 安装配置 PHP

首先,确保安装了 PHP 和 Apache PHP 模块。

  • On Debian-based Systems

    sudo apt update
    sudo apt install php libapache2-mod-php

  • On RHEL-based Systems

    sudo yum install php php-common
    sudo yum install php-fpm

确保已启用 PHP 模块,替换 X.X 为您的 PHP 版本,如 8.2。

复制代码
sudo a2enmod phpX.X

检查 PHP 文件的 Apache 配置

您的 Apache 配置应该告诉服务器使用 PHP 模块处理 .php 文件。

On Debian-based Systems

编辑 apache2.conf 配置文件

复制代码
sudo nano /etc/apache2/apache2.conf

确保包含以下内容:

apacheconf 复制代码
<FilesMatch ".+\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
  • On RHEL-based Systems

    编辑 httpd.conf 配置文件

    复制代码
    sudo nano /etc/httpd/conf/httpd.conf

确保包含以下内容:

apacheconf 复制代码
<FilesMatch ".+\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

3. 检查 .htaccess 文件

如果你使用 .htaccess 文件,检查可能会阻止 PHP 文件正常运行的指令。查找包含 php_value 或 php_flag 这样的行,并确保它们被正确设置或临时注释掉以进行测试。

4. 重启 Apache

保存更改后,重新启动 Apache 服务

On Debian-based Systems

复制代码
sudo systemctl restart apache2

On RHEL-based Systems

复制代码
sudo systemctl restart httpd

5. 检查文件扩展名

确保 PHP 文件的扩展名为 .php,Apache 只在文件扩展名正确的情况下将文件作为 PHP 处理。

6. 检查错误日志

查看 Apache 错误日志以寻找线索

On Debian-based Systems

复制代码
sudo tail /var/log/apache2/error.log

On RHEL-based Systems:

复制代码
sudo tail /var/log/httpd/error_log

我的开源项目

相关推荐
优橙教育12 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
心易行者15 小时前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache
郭萌69616 小时前
多商户平台的优惠券,真正的设计对象是「适用范围」而不是券模板
php
额额额对了16 小时前
嵌入式 Linux 启动程序文件
开发语言·嵌入式硬件·php
v:ychya201817 小时前
独立站外贸建站公司怎么选?建站就要建营销型网站
前端·php
梅菲塔亚18 小时前
华为云从入门到实战
开发语言·华为云·php
要吃这碗饭18 小时前
AI 智能体如何通过 auth.md 注册 Bright Data 账号
数据库·人工智能·php
霸道流氓气质18 小时前
幂等性与 Upsert:防止重复操作产生副作用的技术
开发语言·php
qq_5434478219 小时前
DNS解析怎么排查?故障处理与运维实用手册
运维·服务器·网络·php
ZHOUPUYU20 小时前
PHP 9.0 前瞻:下一代 PHP 会带来哪些新功能?
android·开发语言·php