設定
nginx 1.2.2 と PHP 5.4.4 をインストールしました。FastCGIとして実行されているnginxでPHPを構成しました。
nginx 構成スニペット:
location ~ \.php$ {
root E:/Websites/localhost;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME E:/Websites/localhost/$fastcgi_script_name;
include fastcgi_params;
}
同じシステムで多数のローカル仮想サイトを実行しています。それぞれの要件をカスタマイズするために、各サイトのルート フォルダーに .user.ini ファイルを作成しました。これは、PHP ドキュメントに従って、サブ フォルダーにも適用できるはずです。
これは開発環境であり、ライブではないことに注意してください。そのため、多くのことをカスタマイズする柔軟性があります。
問題
ブラウザーからサイトにアクセスすると、サブフォルダーに飛び込まない限り、正常に動作します。.user.ini はサブディレクトリでは機能しないようです-少なくとも私の構成では。
PHP ドキュメント ( http://www.php.net/manual/en/configuration.file.per-user.php ) に従って:
メインの php.ini ファイルに加えて、PHPは、要求された PHP ファイルのディレクトリから現在のドキュメント ルートまで、各ディレクトリ内の INI ファイルをスキャンします。
SOS
nginx で .user.ini を構成した人はいますか - 助けてください。
注: 2009 年に誰かがバグを報告しました: https://bugs.php.net/bug.php?id=50374
詳細情報 (編集)
PHPInfo() は次のように述べています (ルートおよびサブフォルダー内):
* サーバー API: CGI/FastCGI
* user_ini.filename: .user.ini (ローカルおよびマスター)
php_sapi_name() はcgi-fcgiと言う
これらの値は、ルート フォルダーとサブ ディレクトリの phpinfo() に存在します。したがって、PHPInfo() に違いはありません。
CGI/FastCGIとして実行されていることのさらなる確認は、ルート フォルダーがサブ フォルダーではなく.user.iniから構成を取得していることです。
// .user.ini
auto_prepend_file = "E:\Websites\localhost\user.ini.php"
と
// user.ini.php
<?php
printf('Hi from: %s', __FILE__);
?>
これは実際にはバグである可能性がありますが、この方法で nginx を使用して PHP を構成し、問題に直面していない人がいます。この場合、バージョン番号とプラットフォームを共有してください。