【问题标题】:PHP - if file_exists not working for imagePHP - 如果 file_exists 不适用于图像
【发布时间】:2017-06-06 03:51:45
【问题描述】:

好吧,虽然这应该很简单,但我根本无法让这段代码工作。 我正在尝试检查用户头像图像是否存在,如果不存在,请改用默认图像。现在,即使图像存在并且文件名、路径、拼写、格式等正确,file_exists() 总是返回 false 声称该文件不存在。

  <?php
    $avatar = 'http://'.$_SERVER['SERVER_NAME'].'/ihg/dist/img/user'.$_SESSION['ID'].'-128x128.jpg';
    $default = 'http://'.$_SERVER['SERVER_NAME']."/ihg/dist/img/user_default.jpg";

    if (!file_exists($avatar)) {
        echo "<img src=\"$default\" class=\"user-image\" alt=\"User Image\">";
    } else {
        echo "<img src=\"$avatar\" class=\"user-image\" alt=\"User Image\">";
    }
  ?>

这是服务器端问题还是代码有问题?

编辑: 我也尝试使用 $_SERVER['DOCUMENT_ROOT'] 变量和绝对路径,但没有结果。

【问题讨论】:

  • 为什么默认在服务器变量后使用双引号而不是单引号?无论如何,这可能是文件夹权限问题吗?

标签: php file-exists


【解决方案1】:

file_exists() 接受文件路径而不是 URL。

要根据 URL 确定图像是否存在,您需要改为检查响应类型。

由于这些是本地资源,您只需从使用 URL 切换到完整的服务器文件路径。 ($avatar = '/path/to/root/...)

http://php.net/manual/en/function.file-exists.php

【讨论】:

  • 该解决方案的问题是图像是我的导航栏的一部分,它存在于我服务器上的不同位置,因此需要动态$_SERVER['DOCUMENT_ROOT'] 路径来始终处理同一个文件夹。问题是,document_root 似乎也不起作用......
  • 您是否尝试过输出$_SERVER['DOCUMENT_ROOT'] 并验证您是否获得了您期望的位置/相应地计算路径?
  • 刚刚发现问题:) 我在$_SERVER['DODUCMENT_ROOT'] 之后缺少/,现在一切正常。谢谢!
猜你喜欢
  • 2014-05-16
  • 2015-05-09
  • 1970-01-01
  • 2018-06-13
  • 2017-01-06
  • 2014-05-15
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多