різні налаштування php.ini для різних virtualhost (php-fpm)


11

Я шукав тут все на 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?

S.


Чому ви ніколи НЕ хочете чарівні лапки? Це злі.
Натан С

@NathanC Я знаю, але автор сценарію навіть був досить грубий, щоб сказати мені: "Так, всі вимоги потрібні, тому вони є вимогами".

Якби тільки можна було звільнити цього автора сценарію.
Натан С

@NathanC Так, я ненавиджу розробників snobby :), тільки якби встигнути, я сам розробив би це: S

Так да opp 0pu66996 9 6 79
sbrattla

Відповіді:


8

У php-fpm ви зазвичай встановлюєте це в пулі fpm домену. Пули включаються в основний конф-файл 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

4

У мене був сервер, охоплений оперативною пам’яттю, і хотів уникнути конфігурації декількох пулів для кожного із сайтів із низьким трафіком, на якому я працював. Мені також не сподобалися проблеми безпеки в каталогах .user.ini на основі каталогу, тому я реалізував інше рішення, використовуючи php.ini "розділи":

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


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";
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.