Установка 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, но это касается меня по двум причинам:

  1. Сложность настройки - прямо сейчас, конфигурация очень проста
  2. Переключение с сокета на TCP? Правильно ли я в том, что мне нужен уникальный порт TCP для каждого пула? Альтернативно мне нужен уникальный сокет для пула?
  3. Выделение памяти! Этот сервер не имеет столько оперативной памяти, сколько хотелось бы. Кажется расточительным иметь кучу экземпляров 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, Я не знаю, возможно ли предотвратить это поведение.

Ссылка: https://bugs.php.net/bug.php?id=51595

Другие вопросы по тегам