Windows PCでnginxとphp-cgiを実行しようとしていますが、構造を作成できるように、htmlディレクトリを2つのディレクトリに戻したいところまで来ました。
私が今抱えている唯一の問題は、PHPが.phpファイルを取得しないことです。静的htmlファイル(localhost/test.html)をロードしようとしましたが、正常に動作しますが、localhost/info.phpはまったく機能しません。
誰かが私にこれについていくつかのガイダンスを与えることができますか?サーバーブロックの一部は以下にあります。
server {
listen 80;
server_name localhost;
root ../../www;
index index.html index.htm index.php;
#charset koi8-r;
#access_log logs/Host.access.log main;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9123;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
root
ディレクティブで相対パスを使用しないでください。絶対パスを使用します。
開発用にローカルマシンでNGINXスタックを使用している場合は、Gotchaを再生している事前構成済みの設定がある可能性があります。
open_basedir = "c:/webserver.;c:/”
ここ は、WinNMPを使用したWindowsでエラーを発見した場所です。
今日は、WindowsマシンのNginxサーバーを試してみたかったのです。プロジェクトの基本的なサーバーブロックの詳細を設定した後、サイトのURLを呼び出しました。 WT-NMPスタックで、必要なソフトウェアをすばやくセットアップします。サーバーブロックで、WWW以外の別の場所にルートパスを指定する必要がありました。
次に、URLにアクセスすると、PHPスクリプトの入力ファイルが指定されていません」というメッセージが表示されていました。
今、私はあまり読者ではないので、あちこちをくすくす笑って、修正の多くを見つけられませんでした。そこで、phpログファイルを確認しました。プロジェクトフォルダのパスが許可されたパス内にないため、エラーメッセージが表示されます:(c:/ wt-nmp)
したがって、基本的には、php.init open_basedir値を編集して、プロジェクトを保存したパスを含める必要がありました。しかし、ここでは、ドライバーでさえパスと見なされていることがわかりました。そのため、「d」ドライブにさらに多くのWebサイトを保存したい場合、このエラーが発生しないため、ドライブ文字を配置することになりました。これが最終行です。行った変更を示すために、テキストを太字にしました。
open_basedir =“ c:/ wt-nmp .; d:/”
「HappyNginxは良いNginxです。」
windows上のphp-cgiには、明らかに相対パスに関するバグがあります。
[PHP-BUG]バグ#54955 [新規]:FastCGIはWindowsの相対パスを認識しません
あなたの解決策は次のとおりです。