różne ustawienia php.ini dla różnych virtualhost (php-fpm)

11

Przeszukałem przydział tutaj na serverFault i znalazłem to rozwiązanie ...

Włączenie tego do wirtualnego hosta powinno działać:

  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

Ale niż mnie to uświadomiło, w ogóle nie używam mod_php. Mam zainstalowane php-fpm. I naprawdę nie mogę znaleźć żadnych informacji, czy moja metoda zadziała, czy też istnieje alternatywny sposób ...

Więc co mam zrobić, jeśli mam php-fpm i chciałbym mieć inne ustawienia dla virtualhost?

S.


źródło
Dlaczego miałbyś kiedykolwiek chcieć magicznych cytatów? To są złe.
Nathan C
@NathanC Wiem, ale autor skryptu był nawet na tyle niegrzeczny, by powiedzieć mi: „Tak, wszystkie wymagania są potrzebne, dlatego są wymaganiami”.
Gdyby tylko możliwe było zwolnienie tego autora skryptu.
Nathan C
@NathanC tak, nienawidzę programistów snobistycznych :) tylko gdybym miał czas, sam bym go opracował: S
Tak da opp 0pu66996 9 6 79
sbrattla

Odpowiedzi:

8

W php-fpm zwykle ustawiasz to w puli fpm domeny. Pule są zawarte w głównym pliku conf php-fpm, który znajduje się na moim serwerze pod adresem /etc/php/fpm-php5.3/php-fpm.conf:

...

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

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

W konfiguracji fpm-pool-config możesz ustawić php_admin_flagi php_admin_valuepolubić to:

...

;   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
źródło
4

Miałem serwer wymagający pamięci RAM i chciałem uniknąć konfigurowania wielu pul dla każdej z witryn o niskim natężeniu ruchu, które prowadziłem. Nie podobało mi się również bezpieczeństwo związane z katalogiem .user.ini, dlatego zaimplementowałem inne rozwiązanie, używając „sekcji” php.ini:

http://php.net/ini.sections

Możesz zdefiniować sekcje php.ini (w moim przypadku /etc/php5/fpm/php.ini), które są albo specyficzne dla ścieżki, albo dla hosta. Na dole mam:

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

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

Czytam gdzie indziej, że jeśli używasz metody hosta, musisz użyć konkretnej wartości zdefiniowanej w ServerName w konfiguracji VirtualHost, a nie żadnego z aliasów.

PS Wszystko to zostało zrobione na Debian Jessie 8.4

jaydisc
źródło
1

Możesz dołączyć te flagi do pliku .htaccess pod każdym wirtualnym hostem, dla którego chcesz ustawić te ustawienia. Zobacz: http://www.php.net/manual/en/configuration.file.per-user.php

Nathan C.
źródło
1
Czy nie jest to możliwe tylko w przypadku mod_php? Mam zainstalowane php-fpm.
Z tego, co przeczytałem, jest to metoda na osiągnięcie tego przy pomocy php-fpm. mod_php pozwala na umieszczenie dyrektyw w twoim httpd.conf.
Nathan C
0

W przypadku Nginx użyj tego rozwiązania:

Ponieważ PHP 5.3.3możesz użyć tego polecenia w swoim nginxpliku -vhost.

Przykład ustawienia maxlifetimesesji:

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

    ...

    location ~ \.php$ {
        ...

        fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
        fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
    }
}
Kryptonim
źródło