Nginx / FPM / PHP на всех php-файлах написано «Файл не найден».


8

Я только что установил nginx 1.1.13 и php 5.4.0 на последнюю 64-битную машину Centos 5.8. Nginx и PHP / Fpm работают, и я могу запускать php-скрипты через командную строку ssh, но в браузере я получаю сообщение «Файл не найден». ошибки на всех моих файлах PHP.

Вот как у меня nginx.conf обрабатывает PHP-скрипты:

      location ~ \.php$
      {
              root                    /opt/nginx/html;
              fastcgi_pass            unix:/tmp/fpm.sock;
              fastcgi_index           index.php;
              fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
              include                 fastcgi_params;
      }

Это прямое копирование / вставка с других моих серверов, где он отлично работает с этой настройкой (но они запускают более старые версии php / fpm).

Почему я получаю эти ошибки?


1
Неважно, это отсортировано. Это была глупая проблема с разрешениями.
Mr.Boon

Ответы:


17

Поставьте "include fastcgi_params;" перед всеми строками "fastcgi_param *", "include fastcgi_params;" переопределяет все ваши строки "fastcgi_param *" (см. журнал отладки nginx):

location ~ \.php$ {
    root                    /opt/nginx/html;
    fastcgi_pass            unix:/tmp/fpm.sock;
    fastcgi_index           index.php;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
}

3
Чувак, я потратил на это 4 часа, и твой ответ мне помог.
эксперт

Я пытался преодолеть эту проблему со вчерашнего дня. Ваш ответ мне очень помог! Спасибо!!!
Kacper Kołodziej

1
Как мы можем сделать это без жесткого пути? $ document_root vars, кажется, не работает?
user1179459 20.07.15

3

Я была такая же проблема.

Чтобы решить эту проблему, я проверил пользователя, запустившего nginx, php-fpm, и проверил его права доступа к папке, в которой находится корень. По умолчанию это «www-данные».

но вы можете узнать с помощью ps aux | grep php-fpmи ps aux | grep nginxкоманды.

Вы должны убедиться, что папка доступна пользователю, выполняющему эти процессы.


Спасибо за подсказку. Я пытался разместить свои проекты глубоко внутри своего каталога Dropbox, который имел 700 разрешений по умолчанию. Изменение разрешения Dropbox на 755 решило проблему.
Родион Баскаков

1

У меня была та же проблема, и для меня это была неверная конфигурация / несуществующая директива root в конфигурации сервера nginx


1

Я использую такую ​​конфигурацию, хотелось бы, чтобы она вам помогла. Это работает в OS X. Что касается меня, ответ @Xosofox работал. Я неправильно набрал версию nginx 1.6.2 как 1.2.6, чтобы корень стал несуществующим каталогом.

location ~ \.php$ {
    fastcgi_intercept_errors on;
    root           /usr/local/Cellar/nginx/1.6.2/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME /usr/local/Cellar/nginx/1.6.2/html$fastcgi_script_name;
}

0

Я решаю эту проблему, меняя пользователя и группу на текущего пользователя: group в php-fpm.d / www.conf

По умолчанию пользователь и группа 'nginx', измените это ....

Надеюсь это поможет

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.