Назад | Перейти на главную страницу

Установка 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 для менее посещаемых сайтов на сервере.

В конце концов, я просто определил несколько разделов [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