【问题标题】:file_exists() showing opposite results than expectedfile_exists() 显示与预期相反的结果
【发布时间】:2013-07-08 19:37:44
【问题描述】:

我有一个非常非常简单的函数:

function getUserImage($id) {

    if (file_exists(SITE_ROOT . '/images/' . $id)) {
        return "http://www.---.net/images/" . $id;                         
    } else {
        return "http://www.---.net/images/usericon.png";  
    }
}

这样称呼它:

<img src="<?php echo getUserImage($row['user_id'].".jpg"); ?>" />

如果用户没有个人资料图片,我想做的是显示一个默认图标。即使正在测试正确的路径,它每次都显示默认图标(我已经确认了这一点)。也许我用错了file_exists()

【问题讨论】:

  • 什么是SITE_ROOT?指向站点根目录的 URL,还是 本地文件系统路径
  • 我认为文件的物理路径不正确,您应该检查一下。
  • 如果你回显SITE_ROOT . 'images/' . $id会得到什么
  • 也许你需要使用这个:SITE_ROOT。 '/图片/' 。 $id
  • 我的 SITE_ROOT 就是它听起来的样子。它不是 URL,而是 Web 服务器上的目录结构。

标签: php file-exists


【解决方案1】:

file_exists() 在文件系统级别工作。您正在传递类似/images/whatever 的内容,因此它将在位于文件系统顶部的images 目录中查找whatever 文件,例如你正在尝试相当于

c:\images\whatever

而不是图像实际存在的位置,在您网站的文档根目录中,例如

c:\inetpub\wwwroot\example.com\html\images\whatever

您通常不能直接在文件系统上下文中使用 url,因为您在 URL 中看到的路径很少直接映射到服务器文件系统上的内容。

【讨论】:

    【解决方案2】:
    function getUserImage($id) {
    
        if (file_exists(SITE_ROOT . '/profile_pics/' . $id)) {
            return "http://www.---.net/profile_pics/" . $id;                         
        } else {
            return "http://www.---.net/images/usericon.png";  
        }
    
    
    }
    

    我在错误的文件夹中搜索。应该一直是profile_pics~

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2017-10-22
      • 2019-04-05
      相关资源
      最近更新 更多