Nginx

nginx 和 php-fpm “主腳本未知”

  • October 14, 2016

聞起來像複製品,我知道,但我現在已經嘗試了這個設置 5 次,但我仍然無法讓它工作。大多數配置對於 chroot 和多伺服器等都很複雜,但我現在已將其簡化為最簡單的配置。我想了解 fpm 是如何以最簡單的形式使用 nginx 設置的……請多多包涵。

目前設置:

  • CentOS 7 64 位
  • 來自 Nginx 倉庫的 nginx 1.8.0
  • 來自 Remi php56 的 php 5.6

除了 /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

$$ error $$28638#0:*1 FastCGI 在標準錯誤中發送:“主要腳本未知”同時從上游讀取響應標頭,客戶端: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

誰能給我一個解釋為什麼這不起作用?

$document_root需要從root同一位置或父容器中的指令中獲取其值。您似乎已root在同級容器中定義。移動rootserver容器。

引用自:https://serverfault.com/questions/734935