2016-04-12 9 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 Я проверил, но на странице приведен пример с полным URL-адресом (пример 3). Здесь нет особых особенностей, поэтому мне интересно, почему мой пример не работает. – koljanep

+0

Вы вводите свой * собственный * URL для тестирования? 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() всегда будет возвращать false, если попытается добавить ссылку на ваш актив. Он разрешает абсолютные пути в структуре пути каталога сервера.

+0

Я просто редактирую свой вопрос. Справочник верен, и я пробовал все четыре ссылки, и изображение можно найти там. – koljanep