PHP - 如果 file_exists 不适用于图像

PHP - if file_exists not working for image

是的,尽管这应该很简单,但我就是无法使这段代码正常工作。 我正在尝试检查用户头像图像是否存在,如果不存在,请改用默认头像。现在,即使图像存在并且文件名、路径、拼写、格式等都是正确的,file_exists() 总是 returns 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'] 变量和绝对路径,但没有结果。

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

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

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

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