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

11

Eu 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 do que me dei conta, 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 houver uma maneira alternativa ...

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

S.


fonte
Por que você nunca quer magic quotes? Aqueles são maus.
C # de Nathan C
@ NathanC Eu sei, mas o autor do roteiro foi grosseiro o suficiente para me dizer: "Sim, todos os requisitos são necessários, é por isso que são requisitos".
Se ao menos fosse possível demitir o autor do script.
C # de Nathan C
@NathanC sim, eu odeio desenvolvedores esnobes :) só se eu tivesse tempo, gostaria de desenvolvê-lo sozinho: S
Sim da opp 0pu66996 9 6 79
sbrattla

Respostas:

8

No php-fpm, você geralmente define isso no pool de fpm do domínio. Os pools estão incluídos no arquivo principal de configuração do php-fpm, 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_flage php_admin_valueassim:

...

;   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
etagenklo
fonte
4

Eu tinha um servidor com fome de RAM e queria evitar a configuração de vários pools para cada um dos sites de baixo tráfego que eu estava executando. 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 as "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. No fundo, 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 em nenhum dos aliases.

PS Tudo isso foi feito no Debian Jessie 8.4

jaydisc
fonte
1

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

Nathan C
fonte
1
Isso não é possível apenas com mod_php? Eu tenho o php-fpm instalado.
Pelo que li, este é o método para realizá-lo com php-fpm. O mod_php permite que as diretivas estejam no seu httpd.conf.
Nathan C
0

Para o nginx, use esta solução:

Como PHP 5.3.3você pode usar este comando no seu nginxarquivo -vhost.

Exemplo para definir as maxlifetimesessões:

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

    ...

    location ~ \.php$ {
        ...

        fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
        fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
    }
}
Nome de código
fonte