クライアントの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
内でのみ指定されているため、
Apache + mod_phpの起動時に、リクエストの処理を開始する前にphp.ini
ファイルが読み取られるため、個々の仮想ホストは独自のPHPINIDir
を持つことができません。何らかの理由で、この使用法で警告を出す代わりに、このディレクティブはグローバルINIディレクトリを設定し、陽気な方法で続行します。
代わりに、php_value
、php_flag
、php_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
をこの仮想ホスト専用の指定されたディレクトリに変更します。