Я знаю, что этот конкретный вопрос задавался много раз, но я не вижу каких-либо решающих ответов.
У меня есть mod_proxy_fcgi + php5-fpm + apache 2.4, настроенный на UBUNTU 14, он работает прекрасно.
я хотел сделать php-fpm в изолированной среде (Таким образом, пользователи не будут обращаться к ресурсам других пользователей в совместно используемой среде), если config:
prefix = /var/www/html/example.com/public_html/
chroot = $prefix
chdir = /
После настройки: если я получаю доступ к php-скрипту в браузере, я получаю сообщение об ошибке 404 «Файл не найден»
Если я комментирую вышеупомянутую конфигурацию chroot, то php снова работает без ошибок!
Я не знаю, является ли chroot идеальным решением. Chroot не автоматически означает лучшую безопасность. Лучше всего, например, запускать каждый сайт под другим пользователем с помощью suexec. Тогда у каждого Клиента есть свой пользователь с указанными разрешениями только на свою папку.
Chroot это хорошо, но есть некоторые проблемы. Chroot интересен, если вы планируете предоставить пользователю SSH запись в вашей системе.
https://serverfault.com/questions/139826/apache-suexec-php-fpm-how-to-set-them-up
На канале Freenod # php-fpm человек по имени «Киранос» помог мне решить проблему.
Моя установка была: Apache 2.4.7 + mod_proxy_fcgi + php5-fpm on Ubuntu 14.04
Проблема была, у меня было TCP-соединение с php-fpm сокетом в vhost, как
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/example.net/public_html/$1
и в пуле php-fpm я имел
chroot = /var/www/html/example.net/public_html/
Замечания: Поскольку Apache 2.4.7 не поддерживает Unix-сокеты, мне пришлось использовать TCP. При использовании TCP нет необходимости указывать полный путь к документу в ProxyPassMatch для хроматирования.
Неправильный Conf в vHost:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/example.net/public_html/$1
Правильный Conf в vHost:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/$1
После этого chroot работал ..