Установка php_value в VirtualHost на Debian Squeeze Apache 2.4.10 + mod_proxy_fcgi + php-fpm?
После обновления нашего сервера до 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, но это касается меня по двум причинам:
- Сложность настройки - прямо сейчас, конфигурация очень проста
- Переключение с сокета на TCP? Правильно ли я в том, что мне нужен уникальный порт TCP для каждого пула? Альтернативно мне нужен уникальный сокет для пула?
- Выделение памяти! Этот сервер не имеет столько оперативной памяти, сколько хотелось бы. Кажется расточительным иметь кучу экземпляров php-fpm для менее посещаемых сайтов на сервере.
2 ответа
В конце я только что определил несколько разделов [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
, Я не знаю, возможно ли предотвратить это поведение.