PHP的file_exists()对我不起作用?

时间:2009-08-17 13:01:49

标签: 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;

7 个答案:

答案 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
}

http://us2.php.net/file_exists

答案 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;