将我们的服务器更新到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一个独特的池,但是这个问题有两个原因:
您可以将环境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更安全。