我正在尝试将远程文件复制到我的服务器。在这之前,我想测试文件是否存在。即使我已手动验证远程服务器上存在该文件,以下代码也不起作用。我将PHP的allow_url_fopen设置为On。有什么我想念的吗?旧的程序方法file_exists()就是我想要复制的。
//...
$fileInfo = new \SplFileInfo($imageLocation);
if($fileInfo->isFile()) {
echo "doesn't exist";
} else {
echo "exists, so copy file here";
}
答案 0 :(得分:2)
SplFileInfo
类没有等效file_exists()
。
SplFileInfo::isFile()
是一个不同的检查,它与is_file()
函数相关(它们共享底层代码)。
您可以在file_exists()
上调用$imageLocation
函数,前提是它引用了支持stat()
功能的流包装器。诸如file://
,phar://
和ftp://
(后者仅部分)的包装器支持此功能。
不幸的是,http://
(和https://
)包装不支持stat()
次调用。这意味着file_exists()
和其他调用stat()
的函数将返回false
。
答案 1 :(得分:1)
$fileInfo->getRealPath();
如果不存在则返回false