
我在 serverFault 上搜尋了 allot 並找到了這個解決方案...
將其包含在虛擬主機中應該可以工作:
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 並且想要對虛擬主機進行不同的設置,我該怎麼辦?
S。
答案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";
}
}