我目前正在开发Wordpress,尽管听起来很简单,但我正在尝试检查目录中是否有图像,如果没有,那么它将显示标准的无图像。
我的问题是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,这是正确的URL,但当它进入file_exists
时,它返回$img = 'no_img.jpg'
,尽管文件存在于目录中。。。。我做错了什么??
我还尝试在file_exists
之前添加clearstatcache();
,但也没有成功。有什么想法吗?
尝试使用:
if( getimagesize($upload_dir['baseurl'].'/users/'.$img_tmp) !== false ){
$img = $val->get( 'user_image' );
}
else {
$img = $val->get( 'no_image' );
}
另请参阅文档getimagesize
您可以使用
$fullPath=$upload_dir['baseurl'].'/users/'.$img_tmp;
if(@fopen($fullPath,"r")){
........
}
或者如注释中所述,尝试嗅探:
if (@file_get_contents($upload_dir['baseurl'].'/users/'.$img_tmp, null, null, 0, 1)) {
//ok
}
如果使用$upload_dir=wp_upload_dir(),则需要使用$upload_dir['basedir']而不是baseurl来确定WP安装的上传路径。
或者,您可以使用file_get_contents、cURL或fopen来探查url是否存在图像。