我在 serverFault 上进行了大量搜索并找到了这个解决方案......
将其包含在虚拟主机中应该可以工作:
php_admin_flag register_argc_argv = On
php_value max_execution_time = 1000
php_value session.gc_maxlifetime = 15000
php_admin_flag magic_quotes_gpc = on
但后来我突然意识到,我根本没有使用 mod_php。我安装了 php-fpm。我真的找不到任何信息来判断我的方法是否可行,或者是否有其他方法……
那么,如果我有 php-fpm 并且想要对虚拟主机进行不同的设置,我该怎么做?
年代。
答案1
在 php-fpm 上,您通常在域的 fpm 池中设置此项。池包含在 php-fpm 的主 conf 文件中,该文件位于我的服务器上/etc/php/fpm-php5.3/php-fpm.conf
:
...
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
include=/var/www/*/conf/fpm-pool.conf
在 fpm-pool-config 中,您可以php_admin_flag
像php_admin_value
这样设置:
...
; php_value/php_flag - you can set classic ini defines which can
; be overwritten from PHP call 'ini_set'.
; php_admin_value/php_admin_flag - these directives won't be overwritten by
; PHP call 'ini_set'
php_flag[display_errors] = on
php_admin_value[error_log] = /var/www/cloud/logs/php_err.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 1024M
#php_value[max_execution_time] = 30
php_admin_value[upload_max_filesize] = 4G
php_admin_value[post_max_size] = 4.2G
php_admin_value[max_input_time] = 3600
php_admin_value[max_execution_time] = 3600
答案2
我的服务器内存很大,我想避免为每个运行的低流量网站配置多个池。我也不喜欢基于目录的 .user.ini 的安全问题,所以我使用 php.ini“部分”实现了不同的解决方案:
您可以定义 php.ini 的部分(在我的情况下是 /etc/php5/fpm/php.ini),这些部分是特定于路径或主机的。在底部,我有:
[HOST=host1.example.com]
auto_prepend_file = '/var/www/something'
[HOST=host2.example.net]
upload_max_filesize = 5M
我在其他地方读到,如果您使用主机方法,则必须使用 VirtualHost 配置中 ServerName 中定义的特定值,而不是任何别名。
PS 这一切都是在 Debian Jessie 8.4 上完成的
答案3
您可以在需要这些设置的每个虚拟主机下的 .htaccess 文件中包含这些标志。请参阅:http://www.php.net/manual/en/configuration.file.per-user.php
答案4
对于 nginx 使用以下解决方案:
因为您可以在-vhost-filePHP 5.3.3
中使用此命令。nginx
maxlifetime
会话设置示例:
server {
listen 80;
listen [::]:80;
...
location ~ \.php$ {
...
fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
}
}