Я знаю, что это частый вопрос, но я не нашел обсуждения, которое точно соответствовало бы моему случаю.
Журнал ошибок nginx показывает:
FastCGI отправлено в stderr: "Невозможно открыть основной скрипт: /usr/share/nginx/drupal7/index.php
Но:
этот путь правильный, это корень моего сайта
www-data
имеет разрешение на доступ к нему (если я su www-data
затем cat /usr/share/nginx/drupal7/index.php
файл отображается).
оба корня nginx И fpm/pool.d/myserver.conf
chroot указывает на ту же папку: /usr/share/nginx/drupal7
www-data
пользователь и группа имеют 660
доступ к этой же папке в pool.d/myserver.conf
ps -u www-data
показывает, что ему принадлежат процессы nginx и php5-fpm
У меня не установлен SElinux (как говорят в некоторых обсуждениях, это может быть проблемой)
Так почему же www-data
пользователь может получить доступ к моему index.php
а не FastCGI? Почему FastCGI пытается выбрать правильный путь, но потом говорит, что его не существует?
У вас настроен chroot. Когда процесс находится в chroot, путь от корня до скрипта выглядит следующим образом:
/index.php
Таким образом, вам необходимо изменить пути, используемые с вызовами сценария FastCGI, чтобы они не включали полный путь к каталогу файла сценария.