开发者社区 问答 正文

apache2.4 配置 php-fpm 的 pathinfo 问题

问题:在配置apache2.4的php-fpm里,是用如 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/www/szt_anqun_org/public_html/$1 来设置,如typecho可以正常安装,但安装后,无法登录到后,也无法浏览到文章页,如 https://szt.anqun.org/index.php/archives/1/ 页面,会提示404。


原因:如果使用 ProxyPass 或 ProxyPassMatch,php 的 pathinfo 会丢失。换成如下,可支持 pathinfo, <FilesMatch "\.php$">
        SetHandler  "fcgi://127.0.0.1:9000"
</FilesMatch>
<Proxy "fcgi://127.0.0.1:9000/" enablereuse=on max=10>
</Proxy>







参考:
* https://serverfault.com/questions/888114/missing-path-info-on-apache-2-4-php5-6-fpm-proxy-fcgi
* https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html

展开
收起
dongshan8 2019-02-20 14:11:49 4262 分享 版权
阿里云 AI 助理回答

针对您在Apache 2.4中配置php-fpm遇到的问题,即安装Typecho后无法登录后台或浏览文章页面(如出现404错误),这主要是因为使用ProxyPassMatch时PHP的PATH_INFO信息可能未被正确传递。根据您的描述和参考信息,解决此问题的关键在于调整Apache配置以支持PATH_INFO

解决步骤

  1. 修改Apache配置

    首先,打开Apache的配置文件,通常位于/etc/apache2/sites-available/your_site.confhttpd.conf,具体位置依据您的系统配置而定。然后,替换或注释掉原有的ProxyPassMatch指令,并添加以下配置来启用对PATH_INFO的支持:

    <FilesMatch \.php$>
       SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
    

    这段配置会将所有.php文件的请求通过FastCGI代理到本地的php-fpm服务,并确保PATH_INFO能够正确传递。

  2. 重启Apache服务

    修改配置后,需要重启Apache服务以应用更改。执行以下命令之一,取决于您的系统:

    • 对于systemd管理的系统(如Ubuntu 16.04+,CentOS 7+):
      sudo systemctl restart apache2
      
    • 对于非systemd系统:
      sudo service apache2 restart
      
  3. 验证配置

    完成上述步骤后,尝试重新访问之前出现问题的页面,比如https://szt.anqun.org/index.php/archives/1/。如果配置正确,现在应该能够正常显示内容,不再出现404错误。

注意事项

  • 备份配置文件:在修改Apache配置前,请务必备份原有配置文件,以防配置错误导致服务不可用。
  • 检查php-fpm监听端口:确认php-fpm配置中监听的端口确实是9000,有时默认端口可能会被更改。
  • 日志监控:如果问题依旧存在,查看Apache和php-fpm的日志文件,常见的日志路径有/var/log/apache2/error.log/var/log/php-fpm.log,这些日志能提供更详细的错误信息帮助进一步诊断问题。

通过以上步骤,您应该能够解决Apache与php-fpm集成时的PATH_INFO丢失问题,从而确保Typecho等依赖PATH_INFO的PHP应用可以正常工作。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
PHP
问答地址: