web-dev-qa-db-ja.com

他のVirtualHostsに影響を与えるVirtualHostのカスタムPHPINIDir設定

クライアントの1つが彼のウェブサイトに個人のphp.ini設定をリクエストしたため、次のようにVirtualHostを設定しました。

<VirtualHost *:80>
    DocumentRoot "/home/alex/www.domain.tld"
    ServerName www.domain.tld
    AssignUserID alex alex
    PHPINIDir /home/alex/php.ini
</VirtualHost>

クライアントは/ home/alex /の下にphp.iniファイルを作成しました。このファイルには次の設定のみが含まれています。

session.save_path = "/home/alex/.php_sessions/"

これが行われた後、彼は他のクライアントのWebサイトによって生成された他のすべてのセッションファイルを見ると不平を言い始めました。

基本的なトラブルシューティングを行った後、彼のphp.ini設定がhttpd-vhosts.confで指定されたすべてのWebサイトに影響していることに気付きました。

質問はなぜですか? PHPINIDirは特定の1つのVirtualHost内でのみ指定されているため、

4
Alex G

Apache + mod_phpの起動時に、リクエストの処理を開始する前にphp.iniファイルが読み取られるため、個々の仮想ホストは独自のPHPINIDirを持つことができません。何らかの理由で、この使用法で警告を出す代わりに、このディレクティブはグローバルINIディレクトリを設定し、陽気な方法で続行します。

代わりに、php_valuephp_flagphp_admin_value、およびphp_admin_flag Apacheディレクティブを使用して、この仮想ホストに必要な特定の設定を上書きする必要があります。 ( ここ を参照)この場合、次のようにします。

<VirtualHost *:80>
    DocumentRoot "/home/alex/www.domain.tld"
    ServerName www.domain.tld
    AssignUserID alex alex
    php_value session.save_path "/home/alex/.php_sessions/"
</VirtualHost>

この場合、デフォルトのphp.iniファイルをロードし、session.save_pathをこの仮想ホスト専用の指定されたディレクトリに変更します。

5
DerfK