在Debian上的VirtualHost中设置php_value挤压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。 我为所有虚拟主机configuration了切换,如下所示:

# cat conf-enabled/php5-fpm.conf <FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/" </FilesMatch> 

我也禁用了mod_php。 因此,Apache不会让我在VirtualHosts文件中有php_admin_value / php_value / php_flag指令。

 Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration 

我读了一些关于.user.ini文件,但是听起来不像我需要设置的指令会被支持,而且我只是成功地从我的站点中删除了所有的.htaccess文件,这似乎是一个落后(和不兼容)的方法。

另一个常见的build议是为每个VirtualHost创build一个独特的池,但是这个问题有两个原因:

  1. 设置的复杂性 – 现在,configuration是非常简单的
  2. 从套接字切换到TCP? 我正确的是,我需要一个独特的TCP端口每池? 我还需要一个独特的套接字每池?
  3. 内存分配! 这台服务器没有我想要的那么多的RAM。 在服务器上访问次数较less的网站上有一堆php-fpm实例可能会浪费,这似乎很浪费。

您可以将环境variables从Apacheconfiguration文件传递给CGI池:

  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 ,并且如果第三方用户可以上载或修改它们( AllowOverride None ),则必须禁用.htaccess文件处理。 如果您需要传递多个variables,则必须将它们与一个换行符( \n )连接起来。

恶意用户可以使用简单的.htaccess来更改open_basedir或其他重要的PHPconfigurationvariables(即: disable_functions )。 我不知道是否有可能防止这种行为。

参考: https : //bugs.php.net/bug.php?id = 51595

最后,我在/etc/php5/fpm/php.iniconfiguration中定义了一些[HOST =]部分。

http://php.net/manual/en/ini.sections.php

这感觉比使用mod_env或.user.ini更安全。