
本文旨在解决 Apache2 服务器在使用 `proxy_fcgi` 模块时出现的 "AH01071: Got error 'Primary script unknown'" 错误。通过分析错误原因,并结合实际案例,提供了一种基于 Apache vhost 配置的解决方案,帮助开发者定位并解决此类问题,提升服务器的稳定性和安全性。
在使用 Apache2 作为 Web 服务器,并配置 proxy_fcgi 模块来处理 PHP 请求时,可能会在 Apache 的错误日志中发现如下错误信息:
[proxy_fcgi:error] [pid XXXX:tid YYYYYYYYYYYYY] [client XX.XX.XX.XX] AH01071: Got error 'Primary script unknown'
这个错误通常表示 Apache 无法找到请求的 PHP 脚本文件。这可能是由于多种原因造成的,例如:
一种有效的解决方案是在 Apache 的 vhost 配置文件中添加 zuojiankuohaophpcnIf "-f %{REQUEST_FILENAME}"> 条件判断,以确保只有当请求的文件存在时,才将请求传递给 PHP-FPM 处理。
步骤 1:编辑 Apache vhost 配置文件
找到并编辑你的 Apache vhost 配置文件。通常,这些文件位于 /etc/apache2/sites-available/ 目录下。
步骤 2:修改 <FilesMatch> 指令
找到处理 PHP 文件的 <FilesMatch> 指令块。例如:
<FilesMatch ".+\.ph(ar|p|tml)$">
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
</FilesMatch>在这个指令块中,添加 <If "-f %{REQUEST_FILENAME}"> 条件判断:
<FilesMatch ".+\.ph(ar|p|tml)$">
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
</If>
</FilesMatch>解释:
步骤 3:保存并重启 Apache
保存修改后的配置文件,并重启 Apache 服务器以使更改生效:
sudo systemctl restart apache2
以下是一个完整的 Apache vhost 配置文件的示例,其中包含了上述的 <If> 条件判断:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch ".+\.ph(ar|p|tml)$">
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
</If>
</FilesMatch>
</VirtualHost>通过在 Apache 的 vhost 配置文件中添加 <If "-f %{REQUEST_FILENAME}"> 条件判断,可以有效地减少 "AH01071: Got error 'Primary script unknown'" 错误的数量,并提高服务器的稳定性和安全性。这种方法能够确保只有当请求的文件存在时,才将请求传递给 PHP-FPM 处理,从而避免了不必要的错误。同时,建议定期检查 Apache 的错误日志,并采取其他安全措施来保护服务器免受恶意攻击。
以上就是Apache2 Proxy_FCGI 错误 AH01071:原因分析与解决方案的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号