- 締切済み
file(), file_get_contents(), fopen() がタイムアウトしてしまう
パスが正しいかどうかを何度も確認しましたが、スクリプトのURLをブラウザで開こうとすると、5~6秒した後、以下のエラーが出ます。 Warning: file_get_contents(読み込むファイルのパス): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in スクリプトのパス.php on line 16 おそらく、file_get_contentsの読み込もうとするファイルが重たすぎるのだと思います(スクリプトのファイルサイズ自体は軽いのですが処理に時間がかかってしまう)。というのも、読み込むファイルの内容を、<?php echo "hello world"; ?> とすると、エラーが出なくなり、正常に読み込んでくれます。また、読み込むファイルは php ファイルで同ドメイン上にあり、このファイルをブラウザから閲覧可能です。 他に、fopen, include, file も試しましたが、同様に上記のようなエラーがでます。これはサーバ側でスクリプトの処理の時間制限を行っているからでしょうか? ちなみに、スクリプトの冒頭に、 set_time_limit(0); 一番最後に set_time_limit(30); をおいてみましたが、結果は同様でした。 もし何か対処方法をご存知の方おられましたら、どうぞよろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- moon_night
- ベストアンサー率32% (598/1831)
ファイルがあるのでしたら404になるはず無いんですけどね・・・ 普通はtime outとかになるんですが。 ファイル名を日本語にしているとか、変な文字(空白とか)が入っているとかはありませんか? ファイルサイズはどのくらいですか? file() とかを使用しても駄目ですか?
お礼
file() もだめでした。 スクリプト名はcall.phpで、読み込み先のファイル名も英語でpage_01.php です。ただ、読み込み内容は日本語になっています。Call は page_01.php の内容を保存するスクリプトで、page_01.php はmysql からデータを取り出して表示しています。 ファイルサイズは、 call.php : 854 bytes page_01.php : 475 bytes です。 おかしいのが、page_01.php の内容を遜色のない echo "test"; などにすると、読み込んでくれます。 サーバー側で何か制御がかかっているのでしょうか?
補足
system() 関数で page_01.php を読み込ませることができました。しかし、なぜ普通に file() などで読み込めないのか良くわかりません。