2016-04-12 17 views
1

Ich habe den folgenden Code geschrieben und habe das folgende Ergebnis, aber ich verstehe nicht warum. Ich kenne und finde keine Lösung online. Idealerweise möchte ich, dass es auf alle vier Arten funktioniert.php Datei mit relativ aber nicht mit absolutem Pfad

<?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\" />"; 
?> 

In allen vier Fällen zeigt das Bild nach oben richtig den <img>-Tag.

+0

http://php.net/manual/en/function.getimagesize.php ist ein ziemlich guter Anfang. – Marcus

+0

@Marcus Ich habe überprüft, aber auf der Seite ist ein Beispiel mit einer vollständigen URL (Beispiel 3). Es gibt dort keine näheren Angaben, also frage ich mich, warum mein Beispiel nicht funktioniert. – koljanep

+0

Geben Sie Ihre * eigene * URL zum Testen ein? Die URLs im Beispiel ('example.com') werden nicht aufgelöst. Sie müssen diese durch Ihre Serveradresse ersetzen, z. 'http: // www. ** ihr-server **. com/** ihr_ordner **/** ihr_bild.png **' – Marcus

Antwort

1

$link3 AKTUALISIERT nicht funktioniert, weil file_exists() für /folder/ den ganzen Weg zurück zu Ihrer Wurzel suchen. file_exists() behandelt (relative) Pfade nicht wie der Browser.

So file_exists('/folder/image.png') ist stammen nicht Ihre öffentlichen Verzeichnis ab, es den ganzen Weg zurück auf die gleiche Art und Weise der Verwurzelung Sie durch Eingabe in /home/username/public_html/ erwarten würde oder /var/www/website/ wissen, was ich meine?

Eingabe in file_exists('/path/to/your/public/dir/folder/image.png'); würde funktionieren.

Und file_exists() gibt immer false zurück, wenn Sie versuchen, eine http:// Verknüpfung zu Ihrem fraglichen Asset hinzuzufügen. Es löst nur absolute Pfade in der Pfadstruktur des Serververzeichnisses auf.

+0

Ich bearbeite gerade meine Frage. Das Verzeichnis ist korrekt, und ich habe alle vier Links ausprobiert und das Bild kann dort gefunden werden. – koljanep