【问题标题】:File_exist returning false all the time on Symfony 2File_exist 在 Symfony 2 上一直返回 false
【发布时间】:2013-01-17 11:25:34
【问题描述】:

我正在尝试检查我的 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());

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

【问题讨论】:

  • var_dump($file) 的输出是什么?
  • @mamdouhalramadan string(30) "/uploads/hd/50f7d8c01f093.jpeg"
  • 愚蠢的建议,但可能会有所作为。试试:$this->getAssetUrl('uploads/hd/'.$gift->getImage());!!
  • 无效,我怀疑是路径问题,因为我检查了
  • 我还使用 file_check 手动检查了完整的非相对路径,它再次给出了错误

标签: php symfony file-exists


【解决方案1】:

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

如果你把你的项目放在 /var/www/myProject,file_exists 期望的路径是 /var/www/myProject/web/uploads/hd/,但它只会得到 /uploads/hd。它会在你的根目录中寻找一个名为“uploads”的文件夹。第一个斜杠 ("/") 表示 PHP 的“系统根目录”,而它表示浏览器的“根 URI”。

我相信if (file_exists($this->get('request')->getBasePath() . "/uploads/hd/" . $gift->getImage())) 应该可以解决问题。

【讨论】:

  • 谢谢!您能否详细说明您的答案,文件存在路径应该如何?
  • 刚刚添加了该信息。请让我知道这是否有效。如果没有,我会想办法。
【解决方案2】:

getAssetUrl 没有返回有效的文件名。它会给你一个 URL。

您必须为file_exists 提供路径(相对或绝对),因此,您应该使用类似:

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

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

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多