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

Как исправить отсутствие входного файла в 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. оба корня nginx И fpm/pool.d/myserver.conf chroot указывает на ту же папку: /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 пытается выбрать правильный путь, но потом говорит, что его не существует?

У вас настроен chroot. Когда процесс находится в chroot, путь от корня до скрипта выглядит следующим образом:

/index.php

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