• ベストアンサー

is_fileでファイルが存在していてもfalse

is_file関数を使って、多数のファイルの有無のチェックを行おうとしています。 ところが、実際に存在していてもfalseを返してきます。 同一サーバ内、別サーバー内も試してみましたが、結果は同じでした。 当然ですが、URLの間違いなどはありません。 まったく原因が思いつきません。 よろしくお願いします。 動作環境:windowsxp,php4.3.8

  • muuuuu
  • お礼率75% (101/133)
  • PHP
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
回答No.2

ファイルの有無は同一サーバ内だけだと思いますが。 別サーバに関してはis_fileではなく、違う方法を考えるべきです。 fopenならhttpやftpプロトコルも対応しているので出来そうです。 その他で可能性があるのは、FTP関数とかCURL関数あたりじゃないですかね。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>別サイトにあるファイルの有無となるとfopenでチェックするしかないのか? @fopenを使うのがいいと思います。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

以前に似たような現象のQ(http://okweb.jp/kotaeru.php3?qid=1109184)がありました。 その時は、カレントディレクトリが違うということでした。 ファイル名にフルパスを使うと良いようです。

参考URL:
http://okweb.jp/kotaeru.php3?qid=1109184
muuuuu
質問者

お礼

回答ありがとうございます。 対象ファイルをhttp://~sample.gifのような感じで指定していたのがですが、駄目でした。 その後、PHPのマニュアルに「リモートファイルは使用できない」とありましたので、http://から始まるものは駄目なのかと考えています。 別サイトにあるファイルの有無となるとfopenでチェックするしかないのか? と思っているところです。 今回の目的は、ファイルをアップロードする前にrんんくしてあるGIF、JPEGなどがちゃんと存在するかをチェックしたいのです。 そのサイトはCGI,PHPが使用できないので、phpが使用できる別サイトからチェックをかけたいと思っています。

関連するQ&A

  • phpで扱えるファイルサイズ

    お世話になります。 以下の環境で2GBを越えるファイルを対象にfile_exists()やis_file()関数を使うと正常に判定してくれません(ファイルが存在していてもFalseが返る)。コンパイルのオプションやPHPのバージョンアップで解消できるでしょうか?また、他に影響がありそうな関数がありましたら示して頂けると助かります。 <環境> FedoraCore4 (kernel 2.6) php 5.0.4

    • ベストアンサー
    • 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
  • 別のサーバにあるファイルの存在確認

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

    • ベストアンサー
    • PHP
  • URLの存在チェック

    入力されたURLが実際に存在するかチェックする場合 どのように記述すれば良いのでしょうか。 file_existsを使用した場合存在するURLでも全てFALSEで返ってきてしまいました。

    • ベストアンサー
    • PHP
  • file_get_contentsで外部URLファイルの読み込みの設定

    外部URLのXMLが取得したく、file_get_contentsで取得しようと思っております。 ただ、サーバマシンからですと、falseが返ってきてしまいます。 環境は、 php 4.3.9(RedhatEL4のup2dateでインストール出来るバージョン) になります。 php.iniの allow_url_fopenはOn default_socket_timeoutも60 と十分取っております。 $content = file_get_contents('http://アドレス'); でテストしますと、 私のローカル(OSX php5.2.1) で確認しますと、正常に取得出来るのですが、 RedhatEL4 php4.3.9で行いますと、 falseが返ってきてしまい、取得出来ません。 なお、サーバマシンからwgetでは取得可能です。 allow_url_fopen以外に、何か設定が必要になりますでしょうか。 アドバイスを頂けませんでしょうか。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • メール送信できたのに、FALSEが返ってきます

    if (mail(..... を使ったお問い合せフォームを使用しています。 php5で正常に動いていたものを、そのままサーバーを移して(こちらはphp4)動作確認してみました。 するとメールは正しく送信されたのですが、if (mail(....がFALSEを返し、「送信に失敗しました」と表示されます。 メールが送信されたのにphp5ではTRUE、php4ではFALSE、このようなことが起こる可能性としては、どのようなことが考えられるでしょうか。 正直phpには明るくありませんが、アドバイスを元に原因をつきとめて修正したいと考えております。 よろしくお願いします。

    • 締切済み
    • PHP
  • web 上のファイルが存在するかチェックする方法

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

    • ベストアンサー
    • 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
  • ファイル存在チェック

    日本語サイトと、英語サイトの行き来で: 日本語サイト: 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
  • ファイルの存在チェックとエンコード

    自分なりに調べてファイルの存在チェック後、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