Как исправить ошибку nginx «нет входного файла», если путь и права доступа в порядке?

Как исправить ошибку nginx «нет входного файла», если путь и права доступа в порядке?

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

Журнал ошибок nginx показывает:

FastCGI отправил в stderr: «Не удалось открыть основной скрипт: /usr/share/nginx/drupal7/index.php

Но:

  1. этот путь правильный, это корень моего сайта

  2. www-dataимеет разрешение на доступ к нему (если оно у меня есть, su www-dataто cat /usr/share/nginx/drupal7/index.phpфайл отображается).

  3. и root nginx, и fpm/pool.d/myserver.confchroot указывают на одну и ту же папку:/usr/share/nginx/drupal7

  4. www-dataпользователь и группа имеют 660доступ к этой же папке вpool.d/myserver.conf

  5. ps -u www-dataпоказывает, что он владеет процессами nginx и php5-fpm

  6. У меня не установлен SElinux (как говорят некоторые обсуждения, это может быть проблемой)

Так почему же www-dataпользователь может получить доступ к моему index.php, но не к FastCGI? Почему FastCGI пытается указать правильный путь, но затем говорит, что он не существует?

решение1

У вас настроен chroot. Когда процесс находится в chroot, путь от корня до скрипта такой:

/index.php

Поэтому вам необходимо изменить пути, используемые при вызовах скрипта FastCGI, так, чтобы они не включали полный путь к каталогу файла скрипта.

Связанный контент