• ベストアンサー

web 上のファイルが存在するかチェックする方法

php 5 を使用です。 自分のサーバーのファイルは file_exists($filename) でチェック出来ますが、 web 上のファイルが存在するか確認することは出来るのでしょうか? web 上のファイルというのは 自分のサーバーではないこういうものです。 http://www.example.com/images/pic01.jpg

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

直接ファイルを何回もダウンロードしながら調べるとサーバーや回線に 迷惑がかかりますので、以下のように最小限の情報取得だけでチェック しましょう。 <?php $url='http://www.example.com/images/pic01.jpg'; $x=get_headers($url); print $x[0]; ?> 存在する場合の例は、 HTTP/1.1 200 OK 存在しない場合の例は、 HTTP/1.1 404 Not Found 注目するのは、真ん中の番号です。番号により他のエラーなども分かります 数字の意味は下記参照 http://e-words.jp/p/r-httpstatus.html

yasu182
質問者

お礼

こんな裏技があったんですね 自分で検索してたら この情報をみつける事は出来なかったように思います。 うまく動作しました。 ありがとうございました^^

その他の回答 (1)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

勿論できるよ。 ただし、標準関数一発ってわけにはいかないだろうね phpで別ドメインのファイルを読み込む方法を応用すればできるよ

関連するQ&A

  • ファイル存在チェック

    日本語サイトと、英語サイトの行き来で: 日本語サイト: http://www.hoge.com/sample/sample.html 英語サイト: http://www.en.hoge.com/sample/sample.html 英語サイトのsampleディレクトリに、日本語サイトのsampleディレクトリと同一ファイルが存在した場合のみ、日本語サイトのそのページに<a href="">English</a>のリンクを表示させたく、 下記の様なPHPを書きました。 <?php $url_en = 'http://www.en.hoge.com'; $current_dir = basename(dirname($url)) ; $filename = basename($_SERVER["PHP_SELF"]); if (file_exists($url_en.'/'.$current_dir.'/'.$filename)) { echo ($url_en.'/'.$current_dir.'/'.$filename); } ?> ファイルが存在するので、echo の部分を出力してくれても良さそうな気がするのですが、 表示されません。 また、echo の部分を<a href=""></a>に入れるには、どの様に書いたら宜しいでしょうか?

    • ベストアンサー
    • PHP
  • 同サーバー内のファイルの存在確認ができません

    ※説明の為相対パスで書かせていただきます。 ↓本ファイルの設置ディレクトリ /usr/local/apache/htdocs/admin/check.php $img="/home/monky/www/monky.jp/img/1.jpg"; $chk=(file_exists($img))?TRUE:FALSE; ↑とするとエラーがでました。 このPHPとIMGファイルは以下のように、 /usr/local/apache/htdocs/admin/check.php /home/monky/www/monky.jp/img/1.jpg 階層が全然違いますが、同サーバー内です。 fopenやfile_get_contentsなどURLで指定すれば存在確認ができたのですが、動作が遅すぎなので、なんとかfile_existsで行いたいです。 この場合はどうすればうまくいくのでしょうか??

    • ベストアンサー
    • PHP
  • 【file_exists】ファイルが存在するのに、存在しないとなります

    いつもお世話になっております。 ■環境■ PHP5 Windows ■状況■ フォルダ内にtextファイルが20~45個入っております(個数は状況によって変わります)。 ■目的■ フォルダのtextファイルの中身を参照し、各textファイルに必ず含まれる数字を取り出す。でございます。 ■方法■ (1)フォルダにあるファイル名を取りだす (2)fopenで読み込み(r)で全部を見、数字を別ファイルに書き込む と考えたのですが、(1)で.、..というよくわからないファイルも一緒に出てきてしまったので、file_existsでファイルが存在するか確認してから(2)に移ろうとお思いました。 が、ファイル名は全部ないといわれてしまうのです。 しかしfile_exists($filename)の$filenameを表示させ、ブラウザにこぴぺするとtextデータは出てきます。 以下プログラムの一部です ※$cは(1)で得たフォルダ内にあるファイル名をループでまわしている値です for($b=0;$b<$a;$b++){  $filename="C:/Inetpub/wwwroot/php/kore/1/".$c; if (file_exists($filename)) { print "あるよ<BR>"; } else { print "ないよ<BR>"; } } 結果は(一部です) C:/Inetpub/wwwroot/php/kore/1/.text⇒ないよ C:/Inetpub/wwwroot/php/kore/1/..text⇒ないよ C:/Inetpub/wwwroot/php/kore/1/0155442A5.txt⇒ないよ C:/Inetpub/wwwroot/php/kore/1/01762602A.txt⇒ないよ です。 上記の C:/Inetpub/wwwroot/php/kore/1/01762602A.txt C:/Inetpub/wwwroot/php/kore/1/0155442A5.txt は確実に存在しております。 どこがおかしいのか、ご教授いただければ幸いです よろしくお願いいたします

    • ベストアンサー
    • PHP
  • ファイルの存在チェックとエンコード

    自分なりに調べてファイルの存在チェック後、filemtime順にソートを する処理を書いてみましたがいまいち自信がないので、ご教授お願いします。 後、エンコードがうまくいかないのか日本語を出力しても表示がされません。 ご指摘ご教授お願いします。 <html> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <?php //ファイルの存在チェック if (file_exists('hoge01.html')) { $page['hoge1.htm'] = filemtime('hoge01.html'); } if (file_exists('hoge02.html')) { $page['hoge2.htm'] = filemtime('hoge02.html'); } if (file_exists('hoge03.html')) { $page['hoge3.htm'] = filemtime('hoge03.html'); } //ファイルが空の場合の処理 if($page == false) { echo "ファイルが存在しません。"; } //ファイルが存在すればfilemtime順にソートの処理 else{ asort($page); foreach($page as $key => $value){ echo $key; echo "<br>"; echo "<hr>"; } } ?> </html>

    • 締切済み
    • PHP
  • 別のサーバにあるファイルの存在確認

    PHPで、別のサーバーにあるファイルが存在するかしないか確認できる方法、もしくはファンクションなどありますでしょうか? is_file, file_exists を試しましたが、無理でした。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • webサーバにディレクトリを作るときの有無チェック

    phpのある関数内でwebサーバにディレクトリを作っています。 ここで作ろうとしているディレクトリが既にあるとエラーになるため、そのディレクトリがなければ作るようにしていますが、 ・目的のディレクトリと同名のファイルがない(作られない)ことが分かっている ・この関数が呼ばれる頻度が高い とき、下記のどっちの方法が良いのでしょうか? 1.そのディレクトリが無ければ作る if(!file_exists($newDir)) {  mkdir($newDir); } 2.エラーを無視する @mkdir($newDir);

    • ベストアンサー
    • PHP
  • ファイルの存在チェック クライアント側

    皆さん、いつもお世話になっております。 次の事を実行したいのですが、どうしたらいいのかご存知でしたらご教授いただけると幸いです。 (やりたい事) 1.クライアントのファイル存在チェックしたい。 *実行前の処理として、クライアントのexcelファイルの存在チェック をして、  a)不存在の時は、サーバーからexcelファイルをダウンロード。 b)既存在のときは何もしない。 2.上記との関連ですが、何かボタンを押した時にクライアントのexcel を実行する。 --------------------------------------------------------------- 以上2点ですが、fopen()でやってもサーバーの存在チェックになってしまい、クライアント側をチェック出来ませんでした。何かアドバイスを下さい。 以下、実行サンプルです。 <?php $file = "test.xls"; if(!fopen($file, "r")) { header("location: http://xxxx.com/test/$file"); } ?> --------------------------------------------- 1.クライアントのファイル存在チェック 2.クライアントのexcel実行 簡単そうでしたが、できませんでした。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 画像が存在しない時の 「×」 表示をオフにしたい

    img タグで画像を表示しようとした時、存在しないと 「×」 表示が出ますが、 その表示をオフにする方法ご存知でしょうか? 例えば IE のイメージツールバーをオフにする以下のような方法があると助かるのですが... <meta http-equiv="imagetoolbar" content="no"> $url = 'http://www.example.com'; $header = get_headers($url); $header_info = explode(" ", $header[0]); if($header_info[1] == 200) echo '<img src="http://www.example.com/picture01.jpg" />'; 上記の方法で file が存在するか確認してから表示してたのですが、 サーバーの応答によって検索スピードがかなり遅くなってしまうので 存在しないファイルもそのまま html を書いた方が速いかと思いました。 画像は自分のサーバーでは無いので file_exists は使えないのですが、 なにかアドバイスあれば教えて頂けると助かります。

    • ベストアンサー
    • PHP
  • AS3.0 ファイルが存在するかどうかの調べ方

    外部から読み込んだファイルが存在するかどうかを調べたいんですが PHPにあるfile_existsのようなメソッドはありますか? もしくは他の手段でそういう機能を実装する方法はありますか? わかる方いればよろしくお願いします。

    • ベストアンサー
    • Flash
  • アプリのゲームのルールについて質問

    数学板の人は頭がいいと思ったので質問します。 以下の画像を見た上で質問にお答え頂けましたら幸いです。 http://www.fastpic.jp/images.php?file=2181847113.jpg http://www.fastpic.jp/images.php?file=2444571428.jpg http://www.fastpic.jp/images.php?file=4580363730.jpg http://www.fastpic.jp/images.php?file=4573121543.jpg http://www.fastpic.jp/images.php?file=4972080496.jpg このゲームにおける手前とは何ですか? このゲームのやり方まったくわからん、、 またiPhone持ってる人はこのアプリできるので実際にプレーした方が分かりやすいかもしれません。 http://app-liv.jp/476539815/

専門家に質問してみよう