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

时间:2016-04-12 14:52:52

标签: php image file-exists getimagesize

我编写了以下代码并获得了以下结果,但我不明白为什么。我也不知道或在网上找到任何解决方案。理想情况下,我希望它能以四种方式运作。

<?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>标记正确显示。

1 个答案:

答案 0 :(得分:1)

<强>已更新

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

因此,file_exists('/folder/image.png')并非源于您的公共目录,它以与您在/home/username/public_html/或{{1}中输入的方式一致的方式生根知道我的意思吗?

输入/var/www/website/即可。

如果您尝试向相关资产添加file_exists('/path/to/your/public/dir/folder/image.png');链接,file_exists()将始终返回false。它只解析服务器目录路径结构中的绝对路径。