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 错误。它只解析服务器目录路径结构中的绝对路径。
我写了下面的代码得到了下面的结果,但是我不明白为什么。我也不知道或在网上找不到任何解决方案。理想情况下,我想让它以所有四种方式工作。
<?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 错误。它只解析服务器目录路径结构中的绝对路径。