使用SplFileInfo验证远程文件是否存在

时间:2014-04-06 22:00:48

标签: php spl

我正在尝试将远程文件复制到我的服务器。在这之前,我想测试文件是否存在。即使我已手动验证远程服务器上存在该文件,以下代码也不起作用。我将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";
   }

2 个答案:

答案 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