После обновления нашего сервера до Debian Jessie (8.3) я переключил Apache 2.4.10 с mpm_worker / mod_php на mpm_event / proxy_fcgi / php-fpm. Я настроил передачу обслуживания для всех виртуальных хостов как таковых:
# cat conf-enabled/php5-fpm.conf
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/"
</FilesMatch>
Я также отключил mod_php. Потому что, apache не позволит мне иметь директивы php_admin_value / php_value / php_flag в файлах VirtualHosts.
Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration
Я немного читал о файлах .user.ini, но это не похоже на то, что директивы, которые мне нужно установить, поддерживаются в там, и я только что успешно удалил все файлы .htaccess со своего сайта из соображений производительности, так что это кажется обратным (и несовместимым) подходом.
Другое распространенное предложение - создать уникальный пул для каждого VirtualHost, но это меня беспокоит по двум причинам:
В конце концов, я просто определил несколько разделов [HOST =] в моей конфигурации /etc/php5/fpm/php.ini.
http://php.net/manual/ en / ini.sections.php
Это казалось более безопасным, чем использование mod_env или .user.ini.
Вы можете передавать переменные среды в пул CGI из файлов конфигурации Apache:
SetEnv PHP_ADMIN_VALUE "open_basedir=/path-to-your-doc-root"
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/"
</FilesMatch>
mod_env
должен быть включен, и вы должны отключить обработку файлов .htaccess
, если сторонние пользователи могут загружать или изменять их ( AllowOverride None
). Если вам нужно передать более одной переменной, вы должны объединить их символом новой строки ( \ n
).
Злоумышленник может изменить open_basedir
или другие важные переменные конфигурации PHP (например: disable_functions
) с помощью простого .htaccess
. Я не знаю, можно ли предотвратить такое поведение.