出于某种原因,下面的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;
答案 0 :(得分:81)
file_exists()
需要使用硬盘驱动器上的文件路径,而不是URL。所以你应该有更多的东西:
$thumb_name = $_SERVER['DOCUMENT_ROOT'] . 'images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg';
if(file_exists($thumb_name)) {
some_code
}
答案 1 :(得分:10)
docs说:
从PHP 5.0.0开始,此函数也可以与某些 URL包装器一起使用。有关哪些包装器支持List of Supported Protocols/Wrappers系列功能的列表,请参阅
stat()
。
答案 2 :(得分:5)
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;
}
答案 3 :(得分:1)
您是否启用了允许您使用外部网址的选项?你可以在php.ini中设置它:
allow_url_fopen = 1
答案 4 :(得分:0)
http://php.net/manual/en/function.file-exists.php
您检查了以下评论吗?
只是阅读部分内容,但似乎有几个问题。
缓存可能是个问题。 打开FTP网址时,它总是返回true(他们在评论中说) ...
答案 5 :(得分:0)
您必须编写"file:///C:/Documents%20and%20Settings/xyz/Desktop/clip_image001.jpg"
之类的文件路径。
答案 6 :(得分: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;