nginx 和 php-fpm“主要脚本未知”

nginx 和 php-fpm“主要脚本未知”

我知道这听起来像是重复的,但我已经尝试了 5 次此设置,但仍然无法使其工作。大多数配置都很复杂,包括 chroot 和多服务器等,但现在我已将其简化为最简单的配置。我想了解如何以最简单的形式使用 nginx 设置 fpm...请耐心等待。

当前设置:

  • CentOS 7 64位
  • 来自 Nginx repo 的 nginx 1.8.0
  • php 5.6 来自 Remi php56

添加到 /etc/nginx/conf.d/default.conf

    location ~ \.php$ {
      fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include        fastcgi_params;
    }

/etc/php-fpm.d/www.conf 的添加和修改

listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

添加了文件 /usr/share/nginx/html/info.php

<?php phpinfo();?>

启动两项服务

systemctl start nginx.service
systemctl start php-fpm.service

最后 tail -f /var/log/nginx/error.log

2015/11/09 12:18:01 [错误] 28638#0: *1 FastCGI 在 stderr 中发送:“主要脚本未知“从上游读取响应头时,客户端:xx.xxx.xxx.xxx,服务器:localhost,请求:“GET /info.php HTTP/1.1”,上游:“fastcgi://unix:/var/run/php-fpm/php-fpm.sock:”,主机:“xxx.xx.xxx.xx”

因此,看起来 FPM 找不到脚本,我已经理解了这么多,但是根据配置,脚本文件名是文档根目录和脚本名称。脚本名称为 info.php,根据默认配置,根路径为:

    location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}

因此,如果我手动连接它们,我会得到

/usr/share/nginx/html/info.php

并且此文件存在

#ls -lah /usr/share/nginx/html/
total 20K
drwxr-xr-x 2 root root  4.0K Nov  9 12:35 .
drwxr-xr-x 3 root root  4.0K Apr 21  2015 ..
-rw-r--r-- 1 root root   537 Apr 21  2015 50x.html
-rw-r--r-- 1 root root   612 Apr 21  2015 index.html
-rw-r--r-- 1 root nginx   20 Nov  9 10:45 info.php

有人能解释一下为什么这不起作用吗?

答案1

$document_root需要从同一位置或父容器中的指令中获取其值root。您似乎已root在同级容器中定义。移至root容器server

相关内容