различные настройки php.ini для различных виртуальных хостов (php-fpm)

11

Я искал allot здесь на 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 и мне нужны разные настройки для virtualhost?

С.


источник
Почему вы никогда не хотите волшебные кавычки? Это зло.
Натан С,
@NathanC Я знаю, но автор сценария был достаточно груб, чтобы сказать мне: «Да, все требования необходимы, поэтому они являются требованиями».
Если бы только было возможно уволить этого автора сценария.
Натан C
@NathanC да, я ненавижу разработчиков снобов :) только если бы у меня было время, я бы разработал его сам: S
Да да опп 0pu66996 9 6 79
sbrattla

Ответы:

8

На php-fpm вы обычно устанавливаете это в пуле fpm домена. Пулы включены в основной conf-файл php-fpm, который находится на моем сервере по адресу /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
etagenklo
источник
4

У меня был сервер, требующий оперативной памяти, и я хотел избежать настройки нескольких пулов для каждого из сайтов с низким трафиком, на которых я работал. Мне также не понравились проблемы безопасности .user.ini на основе каталогов, поэтому я реализовал другое решение, используя php.ini «section»:

http://php.net/ini.sections

Вы можете определить разделы 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

В другом месте я читал, что если вы используете метод хоста, вы должны использовать определенное значение, определенное в ServerName в конфигурации VirtualHost, а не псевдонимы.

PS Это все было сделано на Debian Jessie 8.4

jaydisc
источник
1

Вы можете включить эти флаги в файл .htaccess под каждым виртуальным хостом, для которого вы хотите эти настройки. Смотрите: http://www.php.net/manual/en/configuration.file.per-user.php

Натан С
источник
1
Разве это не возможно только с mod_php? Я установил php-fpm.
Из того, что я прочитал, это метод для достижения этого с php-fpm. mod_php позволяет директивам находиться в вашем httpd.conf.
Натан С,
0

Для nginx используйте это решение:

Так как PHP 5.3.3вы можете использовать эту команду в вашем nginx-vhost-файле.

Пример настройки maxlifetimeсессий:

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

    ...

    location ~ \.php$ {
        ...

        fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
        fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
    }
}
Кодовое название
источник