- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:file_existsが動作しない)
file_existsが動作しない
このQ&Aのポイント
- $IMG_URL = "http://hoge.hoge/"; $test = 1; $logo_url = $IMG_URL."logo/".$test."jpg"; if(file_exists($logo_url)){ $var = "あるよ!"; }else{ $var = "ないよ!"; } という形で画像ファイルが存在するかを調べているのですが、PHPに直接記述した場合動作し、functionの中に入れると動作しなくなるのはなぜでしょうか?
- 上記のfunction内に入れた場合、returnの値が「ないよ!」になってしまうのです。どうぞよろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#244856
回答No.2
file_existsはHTTP経由では使えません。ステータスコードを調べる手段が最も適切なのではないでしょうか。 function url_exists($url) { $h = (array)@get_headers($url); return $h[0] && !strpos($h[0], '404'); }
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
回答No.1
function版の > $test = 1; は何のためにあるのでしょうか? 具体的にどんな呼び出しをしたのでしょうか? このプログラムだと"1jpg"というファイルの存在を探そうとしますが、それで正しいのですか?(1.jpg ではありません) プログラムに間違いがあるか、ここに書いたときに間違えたのか、まずははっきりさせましょう。 表示させる等、$logo_url が実際にはどんな文字列になっているかを調べ、それが期待したものかどうかを調べましょう。可能はら、本体に記述したものと、functionに記述したもので違いが無いか調べましょう。 ここに書かれた内容だと、同じ hogehoge/logo/1jpg の存在を調べようとし、同じ結果になると思います。
質問者
補足
記述間違い失礼しました。 function版の「$test=1;」は不要で、echoした「$logo_url」(http://hogehoge/logo/1.jpg)をブラウザに貼り付けると画像が表示されるのですが…。
お礼
ご回答ありがとう御座いました。 上記の方法でIf分岐が行えました。大変助かりました。 しかしなぜ同じ記述で動く箇所と動かない箇所があるのかがいまいちまだ把握できませんが…無事動いてなによりです。 functionの中ではHTTP経由になってしまうとかなのでしょうか?