2009-08-17 8 views
29

Z jakiegoś powodu ten poniższy kod PHP nie zadziała, nie mogę tego rozgryźć.PHP file_exists() nie będzie działać dla mnie?

To jest bardzo dziwne, file_exists nie wydaje się, aby zobaczyć, że obraz nie istnieje, I zostały sprawdzone, aby upewnić się dobra ścieżka plik jest umieszczony w funkcji file_exists i nadal działających w górę

Jeśli zmienić file_exists do! file_exists będzie zwracać obrazy, które istnieją i te, które nie istnieją

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/ –

Odpowiedz

68

file_exists() musi użyć ścieżkę do pliku na dysku twardym, a nie URL. Więc trzeba mieć coś więcej takich jak:

$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'] będzie działać jeśli twój alias nie znajduje się pod twoim głównym katalogiem, w takim przypadku $ _SERVER ['DOCUMENT_ROOT'] zawiedzie –

4

file_exists ma pracować tylko na lokalnym systemie plików.

Więc spróbuj to jeśli używasz 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 powiedzieć:

Od PHP 5.0.0, funkcja ta może być również używany z niektóre URL opakowania. Zapoznaj się z artykułem List of Supported Protocols/Wrappers, aby uzyskać listę, które opakowania obsługują rodzinę funkcji o numerze stat().

+2

Nie wierzę, że HTTP/HTTPS są na liście obsługiwanych przez stat() protokołów na dokumenty - tylko niektóre "głupsze" takie rzeczy jak php: // memory. – AvatarKava

+1

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

1

Czy masz włączoną opcję, która umożliwia korzystanie z zewnętrznych adresów URL? Można go ustawić w php.ini:

allow_url_fopen = 1 
0

Musisz napisać ścieżkę pliku, taką jak "file:///C:/Documents%20and%20Settings/xyz/Desktop/clip_image001.jpg".

0

Spróbuj poniżej. Jego pracy dla mnie

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; 
Powiązane problemy