2016-04-12 121 views
1

我寫了下面的代碼,得到如下結果,但我不明白爲什麼。我也不知道或找到任何解決方案在線。理想情況下,我希望通過以下四種方式使其工作。php查找相對文件,但沒有絕對路徑

<?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>標籤正確顯示。

+0

http://php.net/manual/en/function.getimagesize.php是一個不錯的開始。 – Marcus

+0

@Marcus我檢查過,但在網頁上是一個完整的網址(例3)的例子。它沒有給出更多細節,所以我想知道爲什麼我的例子不起作用。 – koljanep

+0

你是否輸入你自己的*網址進行測試?示例中的URL('example.com')不會實際解析。你需要用你的服務器地址替換那些,例如。 'http:// www。** your-server **。com/** your_folder **/** your_image.png'' – Marcus

回答

1

修訂

$link3不工作,因爲file_exists()正在尋找/folder/所有回你的根方式。 file_exists()不會像瀏覽器一樣處理(相對)路徑。

所以file_exists('/folder/image.png')沒有制止過你公共目錄,它的生根所有的方式回到你會通過輸入/home/username/public_html//var/www/website/明白我的意思期待同樣的方式?

輸入file_exists('/path/to/your/public/dir/folder/image.png');將工作。

file_exists()如果試圖向有問題的資產添加http://鏈接,它將始終返回false。它只解析服務器目錄路徑結構中的絕對路徑。

+0

我只是編輯我的問題。該目錄是正確的,我嘗試了所有四個鏈接,並可以在那裏找到圖片。 – koljanep