0

ファイルがサーバー上にあり、URLが正しいことがわかっている場合、fopenがファイルに対してタイムアウトする理由はありますか?

更新: 申し訳ありませんが、これは php にあると言うべきでした。コードは次のとおりです。

fopen($url, 'r');

ファイルの相対パスを入力すると機能しますが、$url がサーバーの URL である場合は機能しません (ただし、google.com では機能します)。助けてくれてありがとう。

Alaitnik の答えは正しかった。この問題は、イーサネット インターフェイスを介して自分のサーバー ファイルにアクセスした場合にのみ発生します。どうすればこれを修正できますか? URLが動的に読み込まれるため、イーサネットインターフェイスからファイルにアクセスできる必要があります(WordPress cmsから生成されるため、URLは技術的にサーバー上のファイルとして存在しません)

4

6 に答える 6

3

同じサーバー上で実行されているプログラムから HTTP プロトコルを使用して、自分のサーバーからファイルをダウンロードしようとしているように見えますか?

その場合、タイムアウトの問題は Web サーバーまたはネットワーク構成に関連している可能性があります。通常、タイムアウトは次のいずれかの理由でのみ発生します。

  1. サーバーが応答を返すのに本当に時間がかかっている、または
  2. TCP 接続がブロックされています

たとえば、ローカル ファイアウォール ルールではwww.example.com、これらのクエリがイーサネット インターフェイスから送信された場合にのみアクセスを許可している可能性がありますが、ローカルで作成された接続はループバック インターフェイスを経由しようとします。

于 2009-05-19T10:16:29.550 に答える
1

「allow_url_fopen」が「オフ」に設定されている可能性があります。php.ini ファイルまたは phpinfo() を確認してください。

于 2009-05-19T13:52:13.343 に答える
0

これを解決するのに何年もかかりましたが、Alnitak のおかげでここにたどり着きました。ホスト名の代わりに URL に localhost を使用してファイルを開くと、うまくいきました。

于 2011-03-10T12:54:53.660 に答える
0

URL の HTML を取得しようとしている場合は、fopen の代わりに curl を使用することをお勧めします。

fopen は、ネットワーク リソースの特異性を処理する方法を "認識" していないため、ローカル ファイルで使用するのが最適です。

于 2009-05-19T10:11:40.513 に答える
0

fopen のドキュメントのコメントを確認してください。そこにはたくさんの金があります。

于 2009-05-19T10:13:27.077 に答える