CentOS服务器Apache配置PHP-FPM遇AH01071错误求助
问题分析与解决方法
核心问题根源
两种配置报错的本质都是Apache传递给PHP-FPM的脚本路径不匹配:
- 第一种配置中,
fcgi://localhost/path/to/docroot属于错误写法——FCGI目标地址无需附带文档根目录,这会导致PHP-FPM无法识别正确脚本路径,返回「Primary script unknown」。 - 第二种配置去掉了目录,但未正确传递脚本路径变量,导致PHP-FPM尝试访问拼接错误的路径
//path/to/docroot/index.php,返回「No input file specified」。
正确配置步骤
1. 修正FilesMatch的SetHandler规则
使用标准Unix套接字格式,fcgi地址后无需添加文档根:
<FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost" </FilesMatch>
2. 添加脚本路径环境变量传递
在虚拟主机配置块(<VirtualHost *:80>或<VirtualHost *:443>)内,添加以下配置,确保Apache将真实脚本路径传递给PHP-FPM:
# 确保与你的虚拟主机DocumentRoot一致 DocumentRoot "/path/to/docroot" # 传递正确的脚本路径变量(Apache 2.4.10+适用) SetEnvIf Request_URI "^(.*\.php)$" SCRIPT_FILENAME=/path/to/docroot$1
3. 检查PHP-FPM池配置
打开PHP-FPM池配置文件(通常为/etc/php-fpm.d/www.conf),确认以下参数与Apache一致:
# 用户组与Apache保持相同(一般为apache或www-data) user = apache group = apache # 监听套接字路径需与Apache配置匹配 listen = /var/run/php-fpm.sock # 套接字权限设置正确 listen.owner = apache listen.group = apache listen.mode = 0660
4. 重启服务生效
systemctl restart httpd systemctl restart php-fpm
验证
访问你的PHP页面(如http://你的域名/index.php),若配置正确页面将正常加载。仍有问题可查看Apache错误日志(/var/log/httpd/error_log)或PHP-FPM日志(/var/log/php-fpm/www-error.log)排查细节。
内容的提问来源于stack exchange,提问作者el sparrow
相关产品推荐
相关产品推荐

