2009-08-17 22 views
29

Por alguna razón este código PHP a continuación no funcionará, no puedo resolverlo.PHP's file_exists() no funcionará para mí?

es muy extraño, no parece file_exists ver que la imagen no existe, He comprobado para asegurarse una buena ruta del archivo se inserta en la función file_exists y todavía está actuando

Si Cómo cambio a file_exists! file_exists devolverá un imágenes que existen y los que no existen

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

Respuesta

68

file_exists() necesita utilizar una ruta de archivo en el disco duro, no una URL. Por lo que debe tener algo más como:

$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'] trabajaría si su alias no está en la raíz de su documento, en cuyo caso $ _SERVER ['DOCUMENT_ROOT'] fallará –

4

file_exists sólo funciona en el sistema de archivos local.

Así que trate de esto si usted está utilizando 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 dicen:

A partir de PHP 5.0.0, esta función se puede utilizar también con algunos URL envoltorios. Consulte List of Supported Protocols/Wrappers para obtener una lista de los envoltorios compatibles con la familia de funcionalidades stat().

+2

No creo que HTTP/HTTPS estén en la lista de protocolos stat() soportados por los documentos - solo algunos "goofier" cosas como php: // memoria. – AvatarKava

+1

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

1

¿Ha activado la opción que le permite utilizar URL externas? Se puede establecer en php.ini:

allow_url_fopen = 1 
0

http://php.net/manual/en/function.file-exists.php

¿verificó si los comentarios de abajo?

Acabo de leer partes de él, pero parece haber varios problemas.

El almacenamiento en caché puede ser un problema. Al abrir URL de FTP, siempre devuelve verdadero (dicen en los comentarios) ...

0

Tiene que escribir la ruta del archivo como "file:///C:/Documents%20and%20Settings/xyz/Desktop/clip_image001.jpg".

0

Pruebe debajo de uno. Su trabajo para mí

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;