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).

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

Mr.Boon
источник
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;
}
mingalevme
источник
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команды.

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

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

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

Xosofox
источник
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;
}
Hangchen Yu
источник
0

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

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

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

Педро Васконселос
источник