2013-12-12 95 views
0

我正在使用Wordpress,并且它的声音很简单,我试图检查图像是否存在于目录中,如果不是,则会显示标准的无图像。file_exists在所有情况下返回false

我的问题是,file_exists返回false,虽然它内部的URL是正确的,它可以通过浏览器访问,所以它不是一个权限问题,也许我做错了,这是代码;

$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);它会显示确切的直接URL到文件,这是正确的,但是,当它进入返回$img = 'no_img.jpg'虽然文件中的目录中存在file_exists ....我是什么做错了?

我也试着在file_exists之前加clearstatcache();,但是也没有工作。 任何想法?

+0

'$ upload_dir [“baseurl”]'是什么? – Maerlyn

+6

'file_exists'适用于文件路径,而不是网址。 – Narek

+0

@Maerlyn http://codex.wordpress.org/Function_Reference/wp_upload_dir,它返回WP – Liza

回答

1

可以使用

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

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

尝试使用:

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

另请参阅在评论中提到的文档getimagesize

+0

感谢您的回答+1 – Liza

1

或者像,尝试嗅来代替:

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

感谢您的回答+1 – Liza

+0

这似乎是一个不好的做法。提醒我使用CURLand修剪(实际发生的)顶部换行符(由于坏插件)修复WP RSS提要 – Gant

1

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

或者您可以使用file_get_contents,cURL或fopen来嗅探图像是否存在。

+0

感谢您的回答! +1为它 – Liza

+0

伟大..希望帮助! –

相关问题