web-dev-qa-db-ja.com

nginxとphp-cgiで入力ファイルが指定されていません

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;
        }
1
Sandeep Bansal

rootディレクティブで相対パスを使用しないでください。絶対パスを使用します。

3
Michael Hampton

開発用にローカルマシンで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です。」

2
Tom Olson

windows上のphp-cgiには、明らかに相対パスに関するバグがあります。

[PHP-BUG]バグ#54955 [新規]:FastCGIはWindowsの相対パスを認識しません

あなたの解決策は次のとおりです。

  1. マイケルハンプトンが言ったことのような絶対的な道。
  2. ジャンクション
2
user1443578