Windows環境にローカル開発サービス環境を構築し、サービスとしてNginxを利用していましたが、file_get_contents()でローカルリンクを取得する際にエラーが発生したため、次の記事で解決方法を紹介します。
Windows環境でローカル開発サービス環境を構築し、サービスとしてNginxを使用していましたが、file_get_contents()を使用してローカルリンクhttp:/を取得すると、 /127.0. 0.1/index.php、そのようなエラーが発生しました:
file_get_contents(http://127.0.0.1/index.php) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed!
ローカル コンピューターの PHP 環境は: nginx php mysql; そこで、この記事を見つけてメモしたので、記録します。
過去 2 日間、私は Windows で nginx fastcgi の file_get_contents リクエストに取り組んできました。多くの学生は、Baidu のページを表示する echo file_get_contents(‘http://www.baidu.com’) など、file_get_contents が外部ネットワーク上の http/https php ファイルをリクエストするときに何のプレッシャーも感じなかったと思います。しかし、localhost/127.0.0.1 ローカル ネットワーク上で PHP サービスをリクエストすると、常にタイムアウトが表示され、リクエスト時間とスクリプト実行時間をどれだけ長く設定しても、file_get_contents('http: //localhost/phpinfo.php' )。ただし、htmlなどの静的ファイルをリクエストする場合には全く問題ありません。理由は何ですか? !
まず、file_get_contents/curl/fopen が tcp/ip に基づいて http リクエストを開くと、リクエスト データが nginx に送信され、nginx が php-cgi (fastcgi) に php の処理を委託することがわかります。一般に、fastcgi PHP リクエストを処理した後、すぐに終了シグナルを解除して次の処理リクエストを待ちます (もちろん、プログラムがフリーズしてリソースを占有し続ける場合もあります)。 nginx.conf を開くと、次の行が表示されます:
location ~ .php { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME d:/www/htdocs$fastcgi_script_name; include fastcgi_params; }
php で終わるすべてのファイルが fastcgi によって処理されることが明らかにわかりました。また、php.ini 設定ファイルには次の文もあります。 ##
cgi.force_redirect = 1
RunHiddenConsole.exe D:/www/php/php-cgi.exe -b 127.0.0.1:9000 -c C:/WINDOWS/php.ini
http { server { listen 80; server_name 127.0.0.1; location / { index index.php; root /web/www/htdocs; } } server { listen 8080; server_name 127.0.0.1; location / { index index.html; root /web/www/htdocs; } } include /opt/nginx/conf/vhosts/php.conf; }
test.php
echo file_get_contents('http://localhost:8080/phpinfo.php');
file_get_contents 関数が使用できない問題の解決策
Nginx サーバーに PHP を接続し、Nginx ログを解析する方法
以上がPHP サービス nginx は file_get_contents ソリューションを使用できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。