我正在尝试让 php7.4-fpm 状态页面显示在 URL 上。我正在运行 Apache 2.4.41 服务器。但我收到“文件未找到”错误。
这是我所做的。首先我编辑了:
/etc/php/7.4/fpm/pool.d/www.conf
我取消注释并编辑了两行:
pm.status_path = /status
ping.path = /ping
接下来,我进入我的网站的 apache 配置文件:
/etc/apache2/sites-enabled/mywebsite.com.conf
并添加了以下几行:
<VirtualHost *:443>
ServerAlias mywebsite.com
DocumentRoot /home/mywebsite/mywebsite.com
# added these lines to get the php status page to show up
<LocationMatch "/(ping|status)">
SetHandler "proxy:unix:/run/php/php7.4-fpm.mywebsite.sock|fcgi://localhost/status"
</LocationMatch>
</VirtualHost>
这似乎应该是一个简单的设置,但我花了几个小时试图让状态页面正常工作,以诊断几天前在所有网站上使用的所有 php-fpm 进程中启动的无法解释的 php-fpm 问题,但没有成功。
现在我决定玩霰弹枪游戏,尝试不同的处理程序,以期取得一些效果:
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/status"
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"
SetHandler "proxy:unix:/run/php/php7.4-fpm.mywebsite.sock|fcgi://localhost"
如果我尝试“proxy:unix:/run/php/php7.4-fpm.sock”(这是 www.conf 实际监听的内容),我会得到 503 服务不可用。
如果我尝试我的网站套接字“proxy:unix:/run/php/php7.4-fpm.mywebsite.sock”,页面实际上会加载,但它只显示“文件未找到”,无论它是“fcgi://localhost/status”还是“fcgi://localhost”,都无关紧要。我不知道是怎么回事。
答案1
休息并吃过饭后,我几分钟就搞清楚了。如果其他人也遇到同样的问题,你必须编辑你个人站点的池配置,而不是 [www] 的池配置。
/etc/php/7.4/fpm/pool.d/mywebsite.conf
然后添加:
pm.status_path = /status
ping.path = /ping
就我而言,我从不使用 www.conf。相反,我有一个 VPS 设置,其中每个站点都有自己的池,而 apache 根本不使用 www.conf。
下一步是使用与您个人站点的池配置相对应的套接字,例如对于您的 Apache 如下:
proxy:unix:/run/php/php7.4-fpm.mywebsite.sock|fcgi://localhost/status
sudo systemctl reload php7.4-fpm
sudo systemctl reload apache2
谢谢你的关注。几年后我可能会再次看到我自己的帖子,所以对我未来的自己来说,这就是它的做法。别忘了使用 URLhttps://www.mywebsite.com/status?full以获取每个单独流程的完整列表,而不仅仅是摘要。