diferentes configuraciones de php.ini para varios virtualhost (php-fpm)

11

Busqué mucho aquí en serverFault y encontré esta solución ...

Incluir esto en el host virtual debería 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

Pero de lo que me di cuenta, no estoy usando mod_php en absoluto. Tengo php-fpm instalado. Y realmente no puedo encontrar ninguna información si mi método funcionará, o si hay una forma alternativa ...

Entonces, ¿qué hago si tengo php-fpm y me gustaría tener diferentes configuraciones para virtualhost?

S.


fuente
¿Por qué querrías alguna vez citas mágicas? Esos son malvados.
Nathan C
@NathanC Lo sé, pero el autor del guión fue lo suficientemente grosero como para decirme: "Sí, todos los requisitos son necesarios, por eso son requisitos".
Si tan solo fuera posible despedir a ese guionista.
Nathan C
@NathanC sí, odio a los desarrolladores snobby :) solo si tuviera tiempo, lo desarrollaría yo mismo: S
Sí da opp 0pu66996 9 6 79
sbrattla

Respuestas:

8

En php-fpm, generalmente configura esto en el grupo fpm del dominio. Los grupos se incluyen desde el archivo de configuración principal de php-fpm, que se encuentra en mi servidor en /etc/php/fpm-php5.3/php-fpm.conf:

...

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

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

En fpm-pool-config, puede establecer php_admin_flagy php_admin_valueasí:

...

;   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
fuente
4

Tenía un servidor con mucha RAM y quería evitar la configuración de varios grupos para cada uno de los sitios de bajo tráfico que estaba ejecutando. Tampoco me gustaron las preocupaciones de seguridad de los .user.ini basados ​​en directorios, así que implementé una solución diferente usando las "secciones" de php.ini:

http://php.net/ini.sections

Puede definir secciones de php.ini (en mi caso, /etc/php5/fpm/php.ini) que son específicas de la ruta o del host. En la parte inferior, tengo:

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

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

Leí en otra parte que si usa el método de host, debe usar el valor específico definido en ServerName en la configuración de VirtualHost, no ninguno de los alias.

PD: todo esto se hizo en Debian Jessie 8.4

jaydisc
fuente
1

Puede incluir estos indicadores en un archivo .htaccess debajo de cada host virtual que desee con esta configuración. Ver: http://www.php.net/manual/en/configuration.file.per-user.php

Nathan C
fuente
1
¿No es esto posible solo con mod_php? Tengo php-fpm instalado.
Por lo que he leído, este es el método para lograrlo con php-fpm. mod_php permite que las directivas estén en su httpd.conf.
Nathan C
0

Para nginx usa esta solución:

Como PHP 5.3.3puede usar este comando en su nginxarchivo -vhost.

Ejemplo para configurar las maxlifetimesesiones:

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

    ...

    location ~ \.php$ {
        ...

        fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
        fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
    }
}
Nombre clave
fuente