You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache2.4配置PHP5-FPM遇AH01144错误,求解决方法

解决Apache2.4 代理PHP请求到PHP5-FPM的协议处理器错误

嘿,我之前帮不少人排查过这个AH01144错误,结合你的配置和已加载的模块来看,问题出在**ProxyPassMatch的格式不正确**,或者说Apache没正确关联到FCGI协议处理器上——虽然你已经加载了proxy_fcgi_module,但当前的写法没法让Apache正确识别。

问题拆解

你看到的错误提示,核心是Apache找不到处理.php请求的协议处理器。排除模块未加载的情况(你已经确认proxy_fcgi和proxy都加载了),剩下的就是配置写法的问题:
你现在用的ProxyPassMatch写法:

ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:///var/run/php5-fpm.sock|fcgi://127.0.0.1/var/www/html/

这种用|分隔unix套接字和fcgi地址的格式,在Apache2.4的部分版本里是不被正确解析的,尤其是当使用本地套接字而非TCP端口的时候。

两种修正方案

方案1:用FilesMatch关联FCGI处理器(更推荐)

替换你虚拟主机里的ProxyPassMatch,改用FilesMatch块来明确指定PHP文件的处理方式,这种写法更清晰也更稳定:

<VirtualHost *:80>
 DocumentRoot /var/www/html
 ErrorLog ${APACHE_LOG_DIR}/default-error.log
 CustomLog ${APACHE_LOG_DIR}/default-access.log combined

 # 专门处理PHP文件的FCGI代理
 <FilesMatch \.php$>
     SetHandler "proxy:unix:///var/run/php5-fpm.sock|fcgi://localhost/var/www/html"
 </FilesMatch>

 DirectoryIndex /index.php index.php
</VirtualHost>

这里的SetHandler直接告诉Apache:所有.php文件都通过指定的unix套接字转发给PHP5-FPM处理。

方案2:修正ProxyPassMatch的正确格式

如果你习惯用ProxyPassMatch,可以调整成下面的格式——把unix套接字整合到fcgi地址里,而不是用|分隔:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://unix:/var/run/php5-fpm.sock:/var/www/html/$1

注意这里的结构是fcgi://unix:套接字路径:网站根目录/$1,$1用来匹配URL里的PHP文件路径,确保FPM能找到对应的文件。

必做的额外检查

  1. 套接字权限检查:
    Apache进程(通常是www-data用户)需要有权限访问/var/run/php5-fpm.sock,不然会出现连接被拒绝的隐性错误。执行这两条命令调整权限:
    chown www-data:www-data /var/run/php5-fpm.sock
    chmod 660 /var/run/php5-fpm.sock
    
  2. 重启双服务:
    修改配置后,别只重启Apache,一定要同时重启PHP5-FPM,确保套接字的权限和配置都生效:
    sudo service apache2 restart
    sudo service php5-fpm restart
    

验证方法

重启后访问你的info.php,如果能正常显示PHP信息页就说明配置没问题了。要是还报错,去看看PHP-FPM的日志(一般在/var/log/php5-fpm.log),里面会有更详细的连接或文件路径错误提示。

内容的提问来源于stack exchange,提问作者bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:45:41