Php-fpm没有从记录的nginx中找到文件



我在chroot(archlinuxwiki)中安装了arch-linux和nginx。这很管用。

现在我想运行fastcgi。我将php-fpm套接字设置为127.0.0.1:9000,以便从chroot(/srv/http)访问它。

当html文件被成功打印时,php文件却"找不到"。在nginx日志中,我发现:

FastCGI sent in stderr: "primary script unknown" while reading response header from upstream, client: 10.211.55.2, server: localhost, request: "GET /phpinfo.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000:, host: "10.211.55.6".

所以我认为php-fpm没有找到文件,因为nginxchroot中的路径是绝对的,它在真正的根目录中搜索。所以我在我的设置中添加了以下内容,是的,非常丑陋,但结果没有改变。我如何调试它,或者更好地找到一个干净的解决方案?

location ~ .php$ {
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    include       fastcgi_params;
    fastcgi_param SCRIPT_FILENAME  /srv/http$document_root$fastcgi_script_name
}

坦克很多。

FPM找错地方了。

更改php-fpm配置以在访问日志文件中添加其他信息。我的服务器是这样配置的:

[www]
access.format = "%t "%m %r%Q%q" %s %f %{mili}d %{kilo}M %C%%"

来自我的服务器的配置结果的示例行:

07/Sep/2022:19:23:03 -0400 "GET index.php?q=/login&" 200 /nginx/ech11/public/index.php 23.787 2048 21.67%

按顺序,我在访问日志中使用以下选项:

  • %t是当前时间(07/9/2022:22:23:03)
  • %m是方法(GET)
  • %r是请求URI(index.php?q=/login)
  • %Q是介于%Q和%r(&)之间的胶水
  • %q是查询字符串。(在我的示例中为空)
  • %s是状态(200)
  • %f是脚本(/nginx/ech11/public/index.php)
  • %d是持续时间µs(23.787)
  • %M是存储器(2048)
  • %C是CPU的百分比(21.67%)

这应该会通知您在nginx.conf中更改哪些设置,以使fpm能够找到index.php文件。

您可以使用的其他一些选项:

%e  fastcgi env
%l  content length
%n  pool name
%o  header output
%p  PID
%T  time

相关内容

  • 没有找到相关文章

最新更新