configurações diferentes do php.ini para vários hosts virtuais (php-fpm)

configurações diferentes do php.ini para vários hosts virtuais (php-fpm)

Procurei allot aqui no serverFault e encontrei esta solução...

Incluir isso no host virtual deve funcionar:

  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

Mas então me dei conta de que não estou usando o mod_php. Eu tenho o php-fpm instalado. E realmente não consigo encontrar nenhuma informação se meu método funcionará ou se existe uma maneira alternativa...

Então, o que eu faço se tiver php-fpm e quiser ter configurações diferentes para o virtualhost?

S.

Responder1

No php-fpm, você normalmente define isso no pool fpm do domínio. Os pools estão incluídos no arquivo conf principal do php-fpm, que está localizado no meu servidor em /etc/php/fpm-php5.3/php-fpm.conf:

...

;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ; 
;;;;;;;;;;;;;;;;;;;;

include=/var/www/*/conf/fpm-pool.conf

No fpm-pool-config, você pode definir php_admin_flagassim 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

Responder2

Eu tinha um servidor que consumia muita RAM e queria evitar a configuração de vários pools para cada um dos sites de baixo tráfego que estava executando. Eu também não gostei das preocupações de segurança dos .user.ini baseados em diretório, então implementei uma solução diferente usando "seções" do php.ini:

http://php.net/ini.sections

Você pode definir seções do php.ini (no meu caso, /etc/php5/fpm/php.ini) que são específicas do caminho ou do host. Na parte inferior, tenho:

[HOST=host1.example.com]
auto_prepend_file = '/var/www/something'

[HOST=host2.example.net]
upload_max_filesize = 5M

Li em outro lugar que, se você usar o método Host, deverá usar o valor específico definido em ServerName na configuração do VirtualHost, e não qualquer um dos aliases.

PS Tudo isso foi feito no Debian Jessie 8.4

Responder3

Você pode incluir esses sinalizadores em um arquivo .htaccess em cada host virtual em que deseja essas configurações. Ver:http://www.php.net/manual/en/configuration.file.per-user.php

Responder4

Para nginx use esta solução:

Já que PHP 5.3.3você pode usar este comando em seu nginxarquivo -vhost.

Exemplo para definir o maxlifetimenúmero de sessões:

server {
    listen 80;
    listen [::]:80;

    ...

    location ~ \.php$ {
        ...

        fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
        fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
    }
}

informação relacionada