我遇到了一个长期存在的问题:每当我尝试访问 Apache Web 服务器上目录内的任何 PHP 文件(index.php 除外)时,都会收到 403 Forbidden 错误。此问题突然出现,而最近未对配置进行任何重大更改。
以下是问题的详细信息:
- 错误详情:当访问目录内的 PHP 文件(例如 login_process.php)时,我收到 403 Forbidden 错误。
- 文件权限:我已验证相关目录和文件的文件权限设置正确。
- Apache 错误日志:Apache 错误日志(/var/log/apache2/error.log)始终显示如下与我的工作目录中的文件相关的条目:
[Time] [access_compat:error] [pid 841806] [client IP] AH01797: client denied by server configuration: /var/www/example.com/dir/anyfile-except-index.php, referer: https://example.com/dir/
- Apache 配置(apache2.conf):我的 Apache 配置允许在 <Directory /var/www/> 块内授予 AllowOverride All 和 Require all 权限。
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
我尝试了各种故障排除步骤,包括检查 Apache 配置、文件权限和 .htaccess 文件,但无法解决这个问题。
有人能提供一些见解或建议,关于如何调试和修复我的 Apache Web 服务器上目录内的 PHP 文件的 403 Forbidden 错误吗?
更新:通过AllowOverride None
在 apache2.conf 中进行设置解决了我的问题。但我希望目录中的自定义 .htaccess 规则也能应用。
提前感谢您的帮助!
答案1
此错误仅由我之前的故障引起。在我们域名的 Web 根目录中。此 .htaccess 代码位于其中:
<Files *.php>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Files>
<Files index.php>
Order Allow,Deny
Allow from all
</Files>
所以,修复代码后,我的项目就可以正常工作了。感谢大家抽出宝贵的时间帮助我解决我的错误。