Назад | Перейти на главную страницу

nginx и php-fpm «Неизвестный первичный скрипт»

Пахнет дубликатом, я знаю, но сейчас я попробовал эту настройку 5 раз, и все равно не могу заставить ее работать. Большинство конфигураций сложны с chroot, несколькими серверами и т. Д., Но сейчас я свел это к простейшей возможной конфигурации. Я хочу понять, как настраивается fpm с nginx в простейшей форме ... Пожалуйста, потерпите меня.

Текущая настройка:

Дополнение к /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

Кто-нибудь может дать мне объяснение, почему это не работает?

$document_root необходимо получить свою ценность от root директива в том же месте или в родительском контейнере. Кажется, у тебя есть root определен в родственном контейнере. Шаг root к server контейнер.