我需要查找并回显一个位于这两个名为'photoA'或'photoB'的目录中的图像文件名。
这是我开始使用的代码,它试图抓取这些目录,查找指定的文件:
$file = 'image.jpg';
$dir = array(
"http://www.mydomain.com/images/photosA/",
"http://www.mydomain.com/images/photosB/"
);
foreach( $dir as $d ){
if( file_exists( $d . $file )) {
echo $d . $file;
} else {
echo "File not in either directories.";
}
}
我觉得我已经离开了。
答案 0 :(得分:2)
您无法在file_exists
中使用网址,您需要在服务器的文件系统中使用绝对或相对路径(相对于运行脚本),例如:
$dir = array(
"images/photosA/",
"../images/photosB/",
"/home/user/www/images/photosB/"
);
如果您不知道确切的路径并在此之前添加文档根目录,您还可以使用相对于Web服务器根目录的路径:
$dir = array(
$_SERVER['DOCUMENT_ROOT'] . "/images/photosA/",
$_SERVER['DOCUMENT_ROOT'] . "/images/photosB/"
);
(或者您使用file_exists()
)
答案 1 :(得分:1)
由于您从网站的根目录中运行此脚本,因此您无需定义“http://www.mydomain.com/”,因为这不会导致访问被拒绝问题,因为它不是绝对/相对文件路径。相反,如果images /文件夹与PHP脚本位于同一目录级别,那么您需要做的只是
$dir = array(
"images/photosA/",
"images/photosB/"
);
否则,只需根据需要添加绝对路径以使其工作,但是你不能把它放在。其余的似乎应该可以正常工作。
答案 2 :(得分:0)
正如其他人所说,file_exists()
用于本地文件。
如果您真的需要通过http查找文件,可以使用:
$file = 'http://www.domain.com/somefile.jpg';
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
}
else {
$exists = true;
}
注意:如果图像不存在,这依赖于服务器返回404。如果服务器改为重定向到索引页面或pporly编码的错误页面,则可能会获得错误的成功。