サーバーをDebianJessie(8.3)に更新した後、Apache2.4.10をmpm_worker/mod_phpからmpm_event/proxy_fcgi/php-fpmに切り替えました。すべての仮想ホストに対して、次のようにハンドオフを構成しています。
# cat conf-enabled/php5-fpm.conf
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/"
</FilesMatch>
Mod_phpも無効にしました。そのため、ApacheではVirtualHostsファイルにphp_admin_value/php_value/php_flagディレクティブを含めることができません。
Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration
.user.iniファイルについて少し読みましたが、設定する必要のあるディレクティブがそこでサポートされているようには思えません。パフォーマンス上の理由から、サイトからすべての.htaccessファイルを正常に削除しただけです。これは、後方(および互換性のない)アプローチのようです。
他の一般的な提案は、VirtualHostごとに一意のプールを作成することですが、これには2つの理由があります。
最後に、/ etc/php5/fpm /php.ini構成でいくつかの[Host =]セクションを定義しました。
http://php.net/manual/en/ini.sections.php
これは、mod_envや.user.iniを使用するよりも安全だと感じました。
Apache構成ファイルからCGIプールに環境変数を渡すことができます。
SetEnv PHP_ADMIN_VALUE "open_basedir=/path-to-your-doc-root"
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/"
</FilesMatch>
サードパーティユーザーがアップロードまたは変更できる場合は、mod_env
を有効にする必要があり、.htaccess
ファイル処理を無効にする必要があります(AllowOverride None
)。複数の変数を渡す必要がある場合は、それらを改行文字(\n
)で連結する必要があります。
悪意のあるユーザーは、open_basedir
またはその他の重要なPHP構成変数(例:disable_functions
)を単純な.htaccess
で変更できます。この動作を防ぐことができます。