2009-08-17 15 views
29

Aus irgendeinem Grund wird dieser PHP-Code nicht funktionieren, ich kann es nicht herausfinden.PHP file_exists() wird nicht für mich arbeiten?

Es ist sehr seltsam, file_exists scheint nicht zu sehen, dass das Bild vorhanden ist, habe ich einen sichere guter Dateipfad eingefügt wird in die file_exists Funktion zu machen, überprüft und es wirkt noch

up Falls ich wechsle file_exists zu! file_exists es wird ein Bild zurückgeben, und diejenigen gibt, die nicht existieren

define('SITE_PATH2', 'http://localhost/'); 

$noimg = SITE_PATH2. 'images/userphoto/noimagesmall.jpg'; 
$thumb_name = 'http://localhost/images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg'; 
if (file_exists($thumb_name)) { 
    $img_name = $thumb_name; 
}else{ 
    $img_name = $noimg; 
} 
echo $img_name; 
+0

http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/ –

Antwort

68

file_exists() einen Dateipfad auf der Festplatte verwenden muss, nicht eine URL. So sollten Sie etwas mehr wie haben:

$thumb_name = $_SERVER['DOCUMENT_ROOT'] . 'images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg'; 
if(file_exists($thumb_name)) { 
    some_code 
} 

http://us2.php.net/file_exists

+0

$ _SERVER [ 'CONTEXT_DOCUMENT_ROOT'] funktionieren würde, wenn Ihr Alias ​​nicht unter Ihrem Dokumentenstamm ist, dann wird $ _SERVER ['DOCUMENT_ROOT'] nicht funktionieren –

4

file_exists nur auf dem lokalen Dateisystem nicht funktioniert.

Also diese versuchen, wenn Sie verwenden localhost:

$thumb_name = 'images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg'; 
if (file_exists($_SERVER['DOCUMENT_ROOT'].$thumb_name)) { 
    $img_name = SITE_PATH2.$thumb_name; 
} else { 
    $img_name = $noimg; 
} 
10

docs sagen:

Ab PHP 5.0.0 kann diese Funktion auch mit einige URL verwendet werden Wrapper. Eine Liste der Wrapper, die stat() Funktionalität unterstützen, finden Sie unter List of Supported Protocols/Wrappers.

+2

Ich glaube nicht, dass HTTP/HTTPS auf der Liste der stat() unterstützten Protokolle für die Dokumente stehen - nur ein bisschen "goofier" Sachen wie php: // memory. – AvatarKava

+1

nicht wahr? http://docs.php.net/manual/en/wrappers.http.php – SilentGhost

1

Haben Sie die Option aktiviert, mit der Sie externe URLs verwenden können? Sie können es in der php.ini gesetzt:

allow_url_fopen = 1 
0

Sie müssen den Dateipfad wie "file:///C:/Documents%20and%20Settings/xyz/Desktop/clip_image001.jpg" schreiben.

0

Versuchen Sie unter einem. Seine Arbeiten für mich

define('SITE_PATH2', 'http://localhost/'); 
$noimg = SITE_PATH2. 'images/userphoto/noimagesmall.jpg'; 
$thumb_name = 'http://localhost/images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg'; 

if ($fileopen = @fopen($thumb_name)) { 
    $img_name = $thumb_name; 
    fclose($fileopen); 
}else{ 
    $img_name = $noimg; 
} 
echo $img_name; 
Verwandte Themen