44

何らかの理由で、以下のこの 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;
4

7 に答える 7

96

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

于 2009-08-17T13:02:54.600 に答える
9

ドキュメントは言う:

PHP 5.0.0 以降、この関数は一部のURL ラッパーでも使用できます。機能ファミリーをサポートするラッパーのリストについては、サポートされているプロトコル/ラッパーのリストを参照してください。stat()

于 2009-08-17T13:04:09.420 に答える
7

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;
}
于 2009-08-17T13:03:19.593 に答える
2

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

allow_url_fopen = 1
于 2009-08-17T13:06:14.240 に答える
1

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

于 2009-08-17T13:09:32.227 に答える
0

以下を試してください。それは私のために働いています

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;
于 2016-06-25T12:36:15.007 に答える
0

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

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

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

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

于 2009-08-17T13:07:22.757 に答える