unterschiedliche php.ini-Einstellungen für verschiedene virtuelle Hosts (php-fpm)

unterschiedliche php.ini-Einstellungen für verschiedene virtuelle Hosts (php-fpm)

Ich habe hier auf serverFault viel gesucht und diese Lösung gefunden …

Das Einbinden in den virtuellen Host sollte funktionieren:

  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

Aber dann dämmerte es mir, ich verwende mod_php überhaupt nicht. Ich habe php-fpm installiert. Und ich kann wirklich keine Informationen darüber finden, ob meine Methode funktioniert oder ob es einen alternativen Weg gibt ...

Was mache ich also, wenn ich php-fpm habe und andere Einstellungen für den virtuellen Host haben möchte?

S.

Antwort1

Bei php-fpm legen Sie dies normalerweise im FPM-Pool der Domäne fest. Die Pools sind in der Hauptkonfigurationsdatei von php-fpm enthalten, die sich auf meinem Server unter folgender Adresse befindet /etc/php/fpm-php5.3/php-fpm.conf:

...

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

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

In der fpm-pool-config können Sie php_admin_flagFolgendes einstellen 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

Antwort2

Ich hatte einen RAM-hungrigen Server und wollte vermeiden, für jede meiner Websites mit wenig Datenverkehr mehrere Pools zu konfigurieren. Außerdem gefielen mir die Sicherheitsbedenken bei verzeichnisbasierten .user.inis nicht, also implementierte ich eine andere Lösung mit php.ini-„Abschnitten“:

http://php.net/ini.sections

Sie können Abschnitte von php.ini (in meinem Fall /etc/php5/fpm/php.ini) definieren, die entweder pfad- oder hostspezifisch sind. Ganz unten habe ich:

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

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

Ich habe woanders gelesen, dass Sie, wenn Sie die Host-Methode verwenden, den spezifischen Wert verwenden müssen, der in der VirtualHost-Konfiguration unter „ServerName“ definiert ist, und keinen der Aliase.

PS Dies wurde alles auf Debian Jessie 8.4 durchgeführt

Antwort3

Sie können diese Flags in eine .htaccess-Datei unter jedem virtuellen Host einfügen, für den Sie diese Einstellungen wünschen. Siehe:http://www.php.net/manual/en/configuration.file.per-user.php

Antwort4

Verwenden Sie für Nginx diese Lösung:

Da Sie diesen Befehl in Ihrer -vhost-Datei PHP 5.3.3verwenden können .nginx

Beispiel zum Festlegen der Anzahl maxlifetimevon Sitzungen:

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

    ...

    location ~ \.php$ {
        ...

        fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
        fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
    }
}

verwandte Informationen