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

nginx + php-fpm chdir не работает

У меня проблема с работой nginx и php-fpm.

Я получаю сообщение об ошибке 504 при попытке доступа к своему приложению.

У меня такая структура;

data/mywebsite/
 |    
 |---revisions/
 |
 |---shared/
 |
 |---released/
       |---web/
       |---app/
       |---.../

в моем пуле fpm у меня есть следующее:

chroot = /data/mywebsite/
chdir = /released/web/

в моем nginx:

root /data/mywebsite/released/web/;

fastcgi_param                  SCRIPT_FILENAME              /web/released$fastcgi_script_name;

Так что я хочу chroot на data/mywebsite/ и приложение, расположенное в data/mywebsite/released/web/ для доступа к файлам в общей папке.

nb: не знаю, стоит ли об этом упоминать, но у меня есть такая софт-ссылка released -> /data/mywebsite/revisions/...

Когда вы планируете использовать chroot PHP-FPM, вам нужно скопировать довольно много системных файлов внутри chroot, чтобы он работал правильно.

Например, вам нужно /data/mybesite/dev, /data/mybesite/proc, /data/mybesite/sys каталоги / псевдо-файловые системы и файлы внутри /data/mybesite/lib и многие другие.

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

Если вы используете /data/mybesite как chroot каталог, затем символическая ссылка в /data/mybesite/example1/example2 это указывает на /data/mybesite/example2 указывает на /data/mybesite/data/mybesite/example2 каталог при использовании внутри chroot.

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