$var = "http://site.com/image.png";
if (file_exists($var))
echo 'yes';
else
echo 'no';
なぜこのスクリプトは常にfalse
を返しますか?file_exists常にfalse
$var = "http://site.com/image.png";
if (file_exists($var))
echo 'yes';
else
echo 'no';
なぜこのスクリプトは常にfalse
を返しますか?file_exists常にfalse
ではなく、実際にはファイルではなくURLです。
PHP5まで、file_exists
関数は、ファイルまたはディレクトリが存在するかどうかを検出するためのものでした。
ヒント: PHP 5.0.0の時点では、この機能がいくつかともに使用することができますサポートはthis page上の音符当たりとして、いくつかのURLラッパーのサポートを可能にするために導入されたPHP5で
、 URLラッパー。どのラッパーがstat()ファミリの機能をサポートしているかは、サポートされているプロトコルとラッパーを参照してください。
ラッパーはfile_exists
が動作することを可能にhere詳細しかし、残念ながら、the http
one does not support stat
、前提条件です。
サーバーで実行している場合は、おそらく$_SERVER['DOCUMENT_ROOT']
を使用してファイルを変換するか、別の方法でファイルシステム上にファイルを見つけることができます。
変数には、URLではなくシステム上のパスを記述する必要があります。たとえば、
$var = "/var/www/html/image.png";
あなたのサーバーは、おそらくPHP内からの外部接続を許可していない可能性があります。
これはローカルファイルを開いて確認できます。そうであれば、あなたのコードは正しいです。
allow_url_fopen
がオンに設定されていることを確認してください。
気にしないで、私は結論に飛びついた。 @ paxdiabloには正しい答えがあります。 – berkes
リモートファイル(実際には、「リソース」)の存在を確認したい場合は、使用します。
$i = get_headers($url);
$ok = strpos($i[0], "200");
を、HTTPステータスコードを確認してください。
あなたのコンピュータ(またはWebサーバー)の物理パスではなくURLを参照しているので、 – Phill