ホームページ >バックエンド開発 >PHPチュートリアル >nginx+php5.3.20ではfile_get_contentsが使用できません。助けてください。

nginx+php5.3.20ではfile_get_contentsが使用できません。助けてください。

WBOY
WBOYオリジナル
2016-06-23 14:27:351194ブラウズ

file_get_contents 外部ネットワークの URL には問題ありませんが、ローカルマシンの URL (http://localhost/index.php など) を取得したい場合は、次のエラーが報告されます:
A connection接続側が一定期間経過しても適切に応答しなかったため、試行が失敗しました。または、接続されたホストが応答しなかったため、接続の確立に失敗しました)。アップストリーム、クライアント: 124.2xx.xxx.xxx、サーバー: www.xxx からの応答ヘッダーの読み取り中に。 com、リクエスト: "GET /index.php HTTP/1.0"、アップストリーム: "fastcgi://127.0.0.1:9000"、ホスト: "www.xxx.com"
インターネットでそのような記事を見つけました、http: //www.codesky.net/article/ 201106/174247.html しかし、Windows での操作方法がわかりません、または他の方法はありますか?助けてください


ディスカッション (解決策) に返信

関数に時間を追加しようとしましたが、次のように動作しませんでした:

    <?php    $ctx = stream_context_create(array(       'http' => array(           'timeout' => 1 //设置一个超时时间,单位为秒           )       )    );    file_get_contents("http://example.com/", 0, $ctx);    ?>

また、curl に変更してみましたが、次のように動作しませんでした:

		$ch = curl_init();		$timeout = 5;		curl_setopt ($ch, CURLOPT_URL, 'http://localhost/index.php');		curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);		curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);		$con = curl_exec($ch);		curl_close($ch);

注: URL は外部ネットワークからのものです。システムサーバーと URL が存在するサーバーが同じである限り、クラッシュします

ホストを変更して、ローカルに解決するドメイン名を取得します。
ドメイン名を使用してソリューションにアクセスしますよね? または、IP アドレスを直接使用してみてください
ホストを変更し、ローカルに解決するドメイン名を取得してください

ドメイン名を使用してアクセスすると、問題は解決します

または、試してみてくださいIP アドレスを直接指定します
はい、これはまさに私の場合です

php.ini を確認してください。allow_url_fopen = 1 ですか?

また、localhost ページを取得するために、file_get_contents を include に置き換えてみてください。


php.ini を確認してください。allow_url_fopen = 1 ですか?

また、localhost ページを取得するために、file_get_contents を include に置き換えてみてください。

allow_url_fopen は確実にオンになっています
include を使用してみましたが、非常に行き詰まりました。その後、タイムアウトの瞬間に望んでいた結果が得られましたが、結局のところ、それは私が望んでいたものではありませんでした。論理的には、取得したいコンテンツは次のとおりです。 be in それは 1 秒以内に完了します。
これまでに他の解決策が見つかっていますが、まだ混乱しており、Windows の nginx+php5.3 のバグでしょうか?

バグ?そのようなことはない。コードを確認してください。

まず、http://localhost/index.php で echo "hello world" などの単純なコードを使用します。これは単純なコードにも当てはまりますか?


次に、Chrome または Firebug を使用して、リクエスト ヘッダーとブラウザーの Cookie を確認します。または、テストにブラウザーを使用せず、Windows に付属のコマンド プロンプトを使用します。実行 -> cmd Enter -> php c:wwwindex.php Enter結果が dos インターフェイスに返されるかどうかを確認しますか?

私も同じ問題に遭遇しました

他の人と比べて、

この問題、
マークです 専門家を待っています

私も同じ問題に遭遇しました

他の人と比べて、

これだと感じます問題、
マーク 専門家を待っています
兄弟も ローカル URL のコンテンツを取得したいですか?実際にこの関数を使用して静的を生成するのですが、Xiongtai が何に使用するのかはわかりません。
しかし、他の方法、つまり ajax を使用してローカル URL をリクエストして解決しましたが、効果は同じです。

同じ問題が発生しました。今すぐ解決策がある場合は教えてください

同じ問題、質問してください

function __curl_get($url){

/*print_r(phpinfo());exit;*/

$ch =curl_init();
curl_setopt( $ch、CURLOPT_URL、$url);
curl_setopt($ch、CURLOPT_RETURNTRANSFER、1);

curl_close($ch); return $ret;
}

この関数を使用して Web ページをクロールするだけです。これを使用するには、curl_init() 拡張機能を追加する必要があります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。