php 查找具有相对但不具有绝对路径的文件

php finding file with relative but not with absolute path

我写了下面的代码得到了下面的结果,但是我不明白为什么。我也不知道或在网上找不到任何解决方案。理想情况下,我想让它以所有四种方式工作。

<?php
// Note: the file containing this script is located in
// "http://www.example.com/code.php" and the directories as
// listed below are all correct in relation to this script.

$link1 = "https://www.example.com/folder/image.png";
$link2 = "http://www.example.com/folder/image.png";
$link3 = "/folder/image.png";
$link4 = "folder/image.png";

var_dump(getimagesize($link1),file_exists($link1));
// returns bool(false) bool(false)

var_dump(getimagesize($link2),file_exists($link2));
// returns bool(false) bool(false)

var_dump(getimagesize($link3),file_exists($link3));
// returns bool(false) bool(false)

var_dump(getimagesize($link4),file_exists($link4));
// returns array(6) { [0]=> int(192) [1]=> int(250)
// [2]=> int(3) [3]=> string(24) "width="192" height="250""
// ["bits"]=> int(8) ["mime"]=> string(9) "image/png" }
// bool(true)

echo "<img src=\"$link1\" />";
echo "<img src=\"$link2\" />";
echo "<img src=\"$link3\" />";
echo "<img src=\"$link4\" />";
?>

在所有四种情况下,图像都使用 <img> 标签正确显示。

已更新

$link3 不起作用,因为 file_exists() 一直在寻找 /folder/ 回到您的根目录。 file_exists() 处理(相对)路径的方式与浏览器不同。

所以 file_exists('/folder/image.png') 并没有从您的 public 目录中分离出来,它一直以您希望通过输入/home/username/public_html//var/www/website/ 明白我的意思吗?

输入 file_exists('/path/to/your/public/dir/folder/image.png'); 即可。

如果尝试将 http:// link 添加到您的相关资产,

并且 file_exists() 将始终 return 错误。它只解析服务器目录路径结构中的绝对路径。