file_exists在所有情况下都返回false

时间:2013-12-12 09:10:30

标签: php wordpress

我现在正在使用Wordpress,就像它的声音一样简单我试图检查目录中是否有图像,否则它将显示标准的无图像。

我的问题是file_exists返回false虽然其中的url是正确的,并且可以通过浏览器访问,因此它不是权限问题,也许我做错了,这是代码; < / p>

$img = 'no_img.jpg';
if($val->has_prop('user_image')){
$img_tmp = $val->get( 'user_image' );
        if(file_exists($upload_dir['baseurl'].'/users/'.$img_tmp)){
$img = $val->get( 'user_image' );
    }
}

如果我var_dump($upload_dir['baseurl'].'/users/'.$img_tmp);它将显示文件的确切直接网址,并且它是正确的,但是当它进入file_exists时它会返回$img = 'no_img.jpg',尽管该文件存在于目录....我做错了什么?

我还尝试在clearstatcache();之前添加file_exists,但也不起作用。 有什么想法吗?

4 个答案:

答案 0 :(得分:3)

尝试使用:

if( getimagesize($upload_dir['baseurl'].'/users/'.$img_tmp) !== false ){
    $img = $val->get( 'user_image' );
}
else {
    $img = $val->get( 'no_image' );
}

另请参阅文档getimagesize

答案 1 :(得分:1)

或者如评论中所述,尝试嗤之以鼻:

if (@file_get_contents($upload_dir['baseurl'].'/users/'.$img_tmp, null, null, 0, 1)) {
    //ok
}

答案 2 :(得分:1)

你可以使用

$fullPath=$upload_dir['baseurl'].'/users/'.$img_tmp; 

if(@fopen($fullPath,"r")){
     ........
 }

答案 3 :(得分:1)

如果您使用 $ upload_dir = wp_upload_dir(); 来确定,则需要使用$ upload_dir [' basedir ']而不是 baseurl WP安装的上传路径。

或者您可以使用 file_get_contents,cURL或fopen 来监听网址是否存在。