web-dev-qa-db-ja.com

PHP file_exists()は私には動作しませんか?

何らかの理由で、このPHP以下のコードは機能しません。理解できません。

非常に奇妙です。file_existsはイメージが存在することを確認していないようです。適切なファイルパスがfile_exists関数に挿入されていることを確認しました。

File_existsを!file_existsに変更すると、存在するイメージと存在しないイメージが返されます

define('SITE_PATH2', 'http://localhost/');

$noimg = SITE_PATH2. 'images/userphoto/noimagesmall.jpg';
$thumb_name = 'http://localhost/images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg';
if (file_exists($thumb_name)) {
    $img_name = $thumb_name;
}else{
    $img_name = $noimg;
}
echo $img_name;
32
JasonDavis

file_exists()は、URLではなく、ハードドライブ上のファイルパスを使用する必要があります。したがって、次のようなものが必要です。

$thumb_name = $_SERVER['DOCUMENT_ROOT'] . 'images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg';
if(file_exists($thumb_name)) {
    some_code
}

http://us2.php.net/file_exists

81
AvatarKava

docs 言う:

PHP 5.0.0の時点で、この関数はsomeURLラッパーでも使用できます。参照 サポートされているプロトコル/ラッパーのリスト 機能の stat() ファミリーをサポートするラッパーのリスト。

10
SilentGhost

file_exists は、ローカルファイルシステムでのみ機能します。

localhostを使用している場合は、これを試してください:

$thumb_name = 'images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg';
if (file_exists($_SERVER['DOCUMENT_ROOT'].$thumb_name)) {
    $img_name = SITE_PATH2.$thumb_name;
} else {
    $img_name = $noimg;
}
5
Gumbo

外部URLを使用できるオプションを有効にしましたか? php.iniで設定できます:

allow_url_fopen = 1
1
user142019

以下をお試しください。私のために働く

define('SITE_PATH2', 'http://localhost/');
$noimg = SITE_PATH2. 'images/userphoto/noimagesmall.jpg';
$thumb_name = 'http://localhost/images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg';

if ($fileopen = @fopen($thumb_name)) {
    $img_name = $thumb_name;
    fclose($fileopen);
}else{
    $img_name = $noimg;
}
echo $img_name;
0
user4564807

http://php.net/manual/en/function.file-exists.php

以下のコメントを確認しましたか?

その一部を読むだけですが、いくつかの問題があるようです。

キャッシングが問題になる場合があります。 FTP URLを開くと、常にtrueが返されます(コメントで言う)...

0
StampedeXV

"file:///C:/Documents%20and%20Settings/xyz/Desktop/clip_image001.jpg"のようなファイルパスを記述する必要があります。

0
Mannusanghi