さまざまな仮想ホストに対する異なる php.ini 設定 (php-fpm)

さまざまな仮想ホストに対する異なる php.ini 設定 (php-fpm)

ここで 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 を使用していて、仮想ホストに異なる設定をしたい場合はどうすればよいでしょうか?

S.

答え1

/etc/php/fpm-php5.3/php-fpm.confphp-fpm では、通常、ドメインの fpm プールでこれを設定します。プールは、私のサーバーの次の場所にある 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

答え2

私は RAM を大量に消費するサーバーを持っていて、実行しているトラフィックの少ないサイトごとに複数のプールを構成することを避けたいと考えていました。また、ディレクトリベースの .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

他の場所で読んだところによると、ホスト メソッドを使用する場合は、エイリアスではなく、VirtualHost 構成の ServerName で定義された特定の値を使用する必要があるとのことです。

PS これはすべてDebian Jessie 8.4で行われました

答え3

これらのフラグは、設定が必要な各仮想ホストの .htaccess ファイルに含めることができます。参照:http://www.php.net/manual/en/configuration.file.per-user.php

答え4

nginx の場合はこのソリューションを使用します:

このコマンドは-vhost-filePHP 5.3.3で使用できます。nginx

セッションの設定例maxlifetime:

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

    ...

    location ~ \.php$ {
        ...

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

関連情報