File_exist在Symfony 2上一直返回false

时间:2013-01-17 11:25:34

标签: php symfony file-exists

我试图检查symfony 2的/ uploads文件夹中是否存在文件。

    $file = $this->getAssetUrl('/uploads/hd/'.$gift->getImage());
     if(file_exists($file)) return $this->getAssetUrl('/uploads/hd/'.$gift->getImage());
     else return $this->getAssetUrl('/uploads/large/'.$gift->getImage());

这总是返回false,我调试了所有字符串并且路径是正确的,手动检查文件是否存在。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

getAssetUrl只打印您正在打印的资源的URI,而不是实际位置。

如果您将项目放在/ var / www / myProject,路径file_exists预期为/ var / www / myProject / web / uploads / hd /,但它只会获取/ uploads / hd。它会在根目录中查找名为“uploads”的文件夹。第一个斜杠(“/”)表示PHP的“system root dir”,而它表示浏览器的“root URI”。

我相信if (file_exists($this->get('request')->getBasePath() . "/uploads/hd/" . $gift->getImage()))应该做到这一点。

答案 1 :(得分:0)

getAssetUrl未返回有效的文件名。它会为您提供一个URL。

您必须为file_exists提供路径(相对或绝对路径),因此,您应该使用以下内容:

$file = dirname(__FILE__).DIRECTORY_SEPARATOR.'..'
.DIRECTORY_SEPARATOR.'..'
.DIRECTORY_SEPARATOR.'uploads'
.DIRECTORY_SEPARATOR.'hd'
.DIRECTORY_SEPARATOR.$gift->getImage();

当然,根据您的需求调整路径。