apache php5-fpm 404 ошибка при включении chroot

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

У меня есть 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 снова работает без ошибок!

1

Решение

Я не знаю, является ли chroot идеальным решением. Chroot не автоматически означает лучшую безопасность. Лучше всего, например, запускать каждый сайт под другим пользователем с помощью suexec. Тогда у каждого Клиента есть свой пользователь с указанными разрешениями только на свою папку.

Chroot это хорошо, но есть некоторые проблемы. Chroot интересен, если вы планируете предоставить пользователю SSH запись в вашей системе.

https://serverfault.com/questions/139826/apache-suexec-php-fpm-how-to-set-them-up

0

Другие решения

На канале 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 работал ..

0