-2

インターネット全体とスタック オーバーフロー全体を見ましたが、問題の解決策が見つかりません。

私は基本的に、Web ブラウザーでヒットした場合に Web アドレスからアクセスできる PDF ファイルを持っています。アウェイなしでは、http: //url.com/manage/pdf/file.pdf?id=172 ) です。珍しいように思えますが、信じてください。このアドレスにアクセスすると、PDF ファイルが表示されます。

しかし、file_get_contents を使用してヒットしようとすると、エラーが発生します。

ストリームを開くことができませんでした: 接続がタイムアウトしました(明らかに、ファイル名と行番号を切り取っています)。

私はエラーを抑制するつもりはありません (私はすでにこれを行うことができます)。また、エラーを処理する方法を探しているわけでもありません。エラーが発生する理由を知りたいので、エラーが発生しないようにします。

特に、この同じコード行は、同様の方法で他のファイルを取得する際に問題がないためです。

私の制御を超えた制約のため、cURL を使用できません。

ファイルは 1MB 未満であり、php.ini のすべての関連設定がチェックされています (頭の中で思い出せませんが、オープン ソケットとソケット タイムアウトを許可します)。

実際に機能する、まだ見たことのない答えを誰か教えてくれませんか! 詳細が必要な場合はお知らせください。

よろしくお願いします!

4

3 に答える 3

3

file_put_contentsそのような Web アドレスにはアクセスできません。

于 2013-01-31T17:03:06.207 に答える
0

ファイルをリモート サーバーに配置することはできません。そのサイトから PDF を開こうとしている場合は、使用する必要がありますfile_get_contents()

http://url.com/manage/pdf/file.pdf?id=172

リンクに「管理」という単語が含まれています。そのファイルを表示するためにログインする必要がある場合、はい、ブラウザはそれを表示しますが、PHP はサーバーにログインしていないため表示できません。2 番目の問題は、そのリンクを表示するとhttp://www.coolchaser.com/?id=172にリダイレクトされることです。リダイレクトが含まれている可能性のあるリンクを扱っている場合は、CURL に切り替え、curl オプションでリダイレクトするように指示し、許可されるリダイレクトのレベル数を指定する必要があります。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://url.com/manage/pdf/file.pdf?id=172');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$result = curl_exec($ch);
curl_close($ch);
于 2013-01-31T17:11:56.137 に答える
0

Web アドレスからファイルを開こうとしています! これは では実行できませんfile_put_contents()

参照については、こちらを参照してください。

ファイルにデータを追加しようとしている場合、そのファイルはローカル サーバー上の書き込み可能なディレクトリにある必要があります。

于 2013-01-31T17:08:50.360 に答える