【问题标题】:Issue with !file_exists failing, but file exists and loads into browser from URL!file_exists 失败的问题,但文件存在并从 URL 加载到浏览器中
【发布时间】:2012-03-04 16:11:47
【问题描述】:

下面的函数摘录失败,但是当我将错误消息中的 URL 复制并粘贴到浏览器中时,文件仅显示 file.我还确认文件已上传到正确的文件夹中。这是 Codeigniter 2.1.0 中库中类的一部分。

真正奇怪的是,当 !file_exists 失败时,file_get_contents 工作正常。提前感谢您对此提供的任何帮助。

public function output() {
if (!file_exists($this->file)) {
    return "Error loading template file ($this->file).<br />";
}
$output = file_get_contents($this->file);

【问题讨论】:

  • 添加文件的路径,这样我们就可以看到你在做什么。

标签: php codeigniter


【解决方案1】:

file_exists 通过本地文件系统访问文件,而浏览器使用 http(并且网络服务器将请求路由到文件系统)。 仅仅因为一个有效,并不意味着另一个也应该有效。

使用例如确保文件存在。 ls 在控制台上。

【讨论】:

  • Thx 是有道理的——尽管 file_get_contents 有效,但只是更新了问题,但 !file_exists 没有——这让事情更加混乱。
【解决方案2】:

file_exists 使用本地路径,而file_get_contents 可以使用本地路径和 URL。所以如果$this-&gt;file 是一个URL,那么file_exists 失败但file_get_contents 有效是正常的。

【讨论】:

  • 知道了——这可能是 htaccess 问题吗?包含相关函数的类位于受保护的目录中,即使文件不在。
  • 我不明白,什么意思?
  • 你在评论中所说的对我来说很有意义。只是想了解为什么 file_exists 失败并想知道是否因为它使用本地路径而失败,因为正在查找文件的函数位于 htaccess 设置为“拒绝所有人”的目录中
  • 我不这么认为,htaccess 是 Apache 的东西,因此只有通过 Web(URL)访问文件时才有意义
猜你喜欢
  • 2020-04-10
  • 2018-07-29
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
相关资源
最近更新 更多