
Я знаю, что это распространенный вопрос, но я не нашел обсуждения, которое бы полностью соответствовало моему случаю.
Журнал ошибок nginx показывает:
FastCGI отправил в stderr: «Не удалось открыть основной скрипт: /usr/share/nginx/drupal7/index.php
Но:
этот путь правильный, это корень моего сайта
www-data
имеет разрешение на доступ к нему (если оно у меня есть,su www-data
тоcat /usr/share/nginx/drupal7/index.php
файл отображается).и root 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 пытается указать правильный путь, но затем говорит, что он не существует?
решение1
У вас настроен chroot. Когда процесс находится в chroot, путь от корня до скрипта такой:
/index.php
Поэтому вам необходимо изменить пути, используемые при вызовах скрипта FastCGI, так, чтобы они не включали полный путь к каталогу файла скрипта.