Foros del Web » Programando para Internet » PHP »

PHP OO file_exists de PHP no me funciona

Estas en el tema de file_exists de PHP no me funciona en el foro de PHP en Foros del Web. Hola amigos Estoy haciendo una aplicación de PHP donde cargo en una hoja html una fotografia con php. Para comprobar que el archivo existe lo ...
  #1 (permalink)  
Antiguo 13/03/2014, 16:55
 
Fecha de Ingreso: marzo-2014
Mensajes: 8
Antigüedad: 10 años, 1 mes
Puntos: 1
file_exists de PHP no me funciona

Hola amigos
Estoy haciendo una aplicación de PHP donde cargo en una hoja html una fotografia con php.
Para comprobar que el archivo existe lo hago con la funcion file_exists() de PHP.
Los archivos se los voy pasando y me va diciendo que si existen, osea devuelve 1, hasta que llega a unos archivos en que no devuelve nada y el archivo existe y esta en el mismo directorio que los anteriores. Los archivos son imagenes. Este es uno de los archivos que no localiza "XOB-01.jpg "
si el archivo intento cargarlo con:
echo'<img src="imagenes/XOB-01.jpeg" alt="XOB-01.jpeg, 8,2kB" title="XOB 01" border="0" height="196" width="155">';
se visualiza perfectamente.
Osea que existe y se puede acceder a el perfectamente.
Os pongo el codigo

$vb=file_exists($fotoArticulo);
echo'<br>EL VALOR DEVUELTO POR FILE EXISTS ES '.$vb;
if($vb)
{
$nombreFoto=$matrizCLiente[0]["imagen"];
echo'<br>La foto es : '.$nombreFoto.'<br>La foto de la BD es : '.$matrizCLiente[0]["imagen"];
}
else
{
$nombreFoto='sinfoto';
}


$dimension=GetImageSize('imagenes/'.$nombreFoto.'.jpg');

si elimino la comprobacion de file_exists la funcion GetImageSize tampoco lo detecta en los mismos casos de error.

¿Alguien sabe a que se puede deber?
Un saludo y gracias
  #2 (permalink)  
Antiguo 13/03/2014, 17:00
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: file_exists de PHP no me funciona

que tienes en #fotoArticulo?
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #3 (permalink)  
Antiguo 13/03/2014, 17:00
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: file_exists de PHP no me funciona

Cita:
Iniciado por JuanPhp Ver Mensaje
Hola amigos
Estoy haciendo una aplicación de PHP donde cargo en una hoja html una fotografia con php.
Para comprobar que el archivo existe lo hago con la funcion file_exists() de PHP.
Los archivos se los voy pasando y me va diciendo que si existen, osea devuelve 1, hasta que llega a unos archivos en que no devuelve nada y el archivo existe y esta en el mismo directorio que los anteriores. Los archivos son imagenes. Este es uno de los archivos que no localiza "XOB-01.jpg "
si el archivo intento cargarlo con:
echo'<img src="imagenes/XOB-01.jpeg" alt="XOB-01.jpeg, 8,2kB" title="XOB 01" border="0" height="196" width="155">';
se visualiza perfectamente.
Osea que existe y se puede acceder a el perfectamente.
Os pongo el codigo

$vb=file_exists($fotoArticulo);
echo'<br>EL VALOR DEVUELTO POR FILE EXISTS ES '.$vb;
if($vb)
{
$nombreFoto=$matrizCLiente[0]["imagen"];
echo'<br>La foto es : '.$nombreFoto.'<br>La foto de la BD es : '.$matrizCLiente[0]["imagen"];
}
else
{
$nombreFoto='sinfoto';
}


$dimension=GetImageSize('imagenes/'.$nombreFoto.'.jpg');

si elimino la comprobacion de file_exists la funcion GetImageSize tampoco lo detecta en los mismos casos de error.

¿Alguien sabe a que se puede deber?
Un saludo y gracias
php te envia algun mensaje cuando pasa eso ? y ya verificaste que la ruta al archivo es la correcta ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 13/03/2014, 17:08
 
Fecha de Ingreso: marzo-2014
Mensajes: 8
Antigüedad: 10 años, 1 mes
Puntos: 1
Respuesta: file_exists de PHP no me funciona

$fotoArticulo='imagenes/'.$matrizCLiente[0]["imagen"].'.jpg';
Así se carga el nombre de la foto desde una base de datos MySQL quedando la cadena como:
$fotoArticulo='imagenes/XOB-01.jpg';
Cuando anulo file_exists y el error me lo da la funcion GetImageSize el mensaje es este:
Warning: getimagesize(imagenes/XOB-01.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\AppServ\www\mayorista1\tienda\productos.php on line 117
  #5 (permalink)  
Antiguo 13/03/2014, 17:10
 
Fecha de Ingreso: marzo-2014
Mensajes: 8
Antigüedad: 10 años, 1 mes
Puntos: 1
Respuesta: file_exists de PHP no me funciona

La ruta al archivo es correcta pues cargo muchas imagenes en listado por pantalla. Pero cuando llego a un grupo empezando por la indicada, da el error.
Y todas estan en el mismo directorio
  #6 (permalink)  
Antiguo 13/03/2014, 17:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: file_exists de PHP no me funciona

JuanPhp, tal vez no estás entendiendo cómo funciona file_exists(), te explico:

Si lees el manual dicha función te devolverá FALSE si el archivo no existe, desde luego ese es su objetivo.

Entonces, si haces esto:
Código PHP:
Ver original
  1. $vb=file_exists($fotoArticulo);
  2.  
  3. if (!$vb) {
  4.   // NO EXISTE EL ARCHIVO
  5. }

Si jamás entra a dicho if() no significa que file_exists() "no funcione", en eso te equivocas garrafalmente.

Si no entra al if() simplemente significa que no existe el archivo.

Cita:
Iniciado por JuanPhp Ver Mensaje
La ruta al archivo es correcta pues cargo muchas imagenes en listado por pantalla. Pero cuando llego a un grupo empezando por la indicada, da el error.
Y todas estan en el mismo directorio
Así pues, hay muchas razones para que esto sea así, la más básica es que la ruta que estás especificando está mal, sobre todo en relación a la ubicación actual del script en ejecución.

Es decir, lo correcto es usar una ruta absoluta, que siempre funcionará independientemente de dónde se ubique el script actual.

Lo más evidente en tu caso es que estás usando una ruta relativa.

¿Entiendes cual es tu problema?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 13/03/2014, 17:18
 
Fecha de Ingreso: marzo-2014
Mensajes: 8
Antigüedad: 10 años, 1 mes
Puntos: 1
Respuesta: file_exists de PHP no me funciona

Gracias por tu ayuda pateketrueke
La funcion funciona bien para unos archivos y para otros no. Y todos los archivos de fotos estan en el mismo directorio.
¿Como hago lo de la ruta absoluta? No entiendo cual es el problema
  #8 (permalink)  
Antiguo 13/03/2014, 17:24
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: file_exists de PHP no me funciona

verifica bien la ruta...

verifica que si esta buscando en el directorio que debe, agregla / al inicio ../

haz prueba de la ubicacion de la imagen..
el nombre de la imagen es en mayuscula?
tiene espacio el nombre de la imagen?

verifica todo eso
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #9 (permalink)  
Antiguo 13/03/2014, 17:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: file_exists de PHP no me funciona

Cita:
Iniciado por JuanPhp Ver Mensaje
La funcion funciona bien para unos archivos y para otros no. Y todos los archivos de fotos estan en el mismo directorio.
Te lo repito: tu eres el que se equivoca, dicha función trabaja de manera correcta.

Ahora, entiendo que todos los archivos estén en el mismo directorio, pero tal vez lo que cambia es la ruta del script donde los intentas leer y ahí es entonces donde se ve afectado el resultado.

Ejemplo:

/index.php
/otro/script.php
/imagenes/ejemplo.gif

Suponiendo que tienes esto en index.php:
Código PHP:
Ver original
  1. echo file_exists('imagenes/ejemplo.gif'); // true

Sin embargo esto no funciona igual en otro/script.php:
Código PHP:
Ver original
  1. echo file_exists('imagenes/ejemplo.gif'); // false

¿Por qué?

Porque al ser una ruta relativa trata de resolverse justo a partir de la ubicación del script que invoca la función file_exists(), y en el caso de otro/script.php internamente se intenta resolver la ruta como "otro/imagenes/ejemplo.gif" y por ende no existe.

¿Se entiende?

Cita:
Iniciado por JuanPhp Ver Mensaje
¿Como hago lo de la ruta absoluta? No entiendo cual es el problema
Una ruta absoluta es la que indica toda la dirección física del archivo, un ejemplo: /var/www/site/imagenes/ejemplo.gif

Para obtener la raíz de tu sitio debes usar $_SERVER['DOCUMENT_ROOT'], y entonces puedes a partir de ahí hacer referencia a cualquier otra ruta:

Código PHP:
Ver original
  1. echo file_exists($_SERVER['DOCUMENT_ROOT'] . '/imagenes/ejemplo.gif'); // true

¿Ahora está más claro?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 13/03/2014, 17:28
 
Fecha de Ingreso: marzo-2014
Mensajes: 8
Antigüedad: 10 años, 1 mes
Puntos: 1
Respuesta: file_exists de PHP no me funciona

El directorio esta bien, la imagen existe, el nombre esta en mayuscula el nombre no tiene espacio. Y todo esto se comprueba porque carga con:

echo'<img src="imagenes/XOB-01.jpeg" alt="XOB-01.jpeg, 8,2kB" title="XOB 01" border="0" height="196" width="155">';

Como puedes ver que pongo en el codigo del principio
  #11 (permalink)  
Antiguo 13/03/2014, 17:33
 
Fecha de Ingreso: marzo-2014
Mensajes: 8
Antigüedad: 10 años, 1 mes
Puntos: 1
Respuesta: file_exists de PHP no me funciona

Entiendo lo que me quieres decir pateketrueke
Voy a probar lo que me dices, aunque te aviso que el fallo lo da el mismo script.
Unas veces lo hace bien y otras no, no se trata que lo use en dos script ubicados en lugares diferentes y por eso falle.
De todas formas voy a probar lo que dices lo mismo me soluciona el problema.
Muchas gracias
  #12 (permalink)  
Antiguo 13/03/2014, 17:38
 
Fecha de Ingreso: marzo-2014
Mensajes: 8
Antigüedad: 10 años, 1 mes
Puntos: 1
Respuesta: file_exists de PHP no me funciona

pateketrueke acabo de probar lo de la ruta absoluta y no funciona asi esta

$fotoArticulo='imagenes/'.$matrizCLiente[0]["imagen"].'.jpg';

if(file_exists($_SERVER['DOCUMENT_ROOT'].$fotoArticulo))

$matrizCLiente[0]["imagen"] aqui esta guardado el valor=XOB-01
  #13 (permalink)  
Antiguo 13/03/2014, 17:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: file_exists de PHP no me funciona

Para que puedas observar lo que haces, ¿por qué no imprimes el resultado?

Es decir, nos es imposible adivinar lo que exactamente está pasando.

Ejemplo:
Código PHP:
Ver original
  1. $fotoArticulo='imagenes/'.$matrizCLiente[0]["imagen"].'.jpg';
  2.  
  3. echo 'RUTA=' . $_SERVER['DOCUMENT_ROOT'].$fotoArticulo;
  4.  
  5. if(file_exists($_SERVER['DOCUMENT_ROOT'].$fotoArticulo))

¿Qué ruta es la que muestra?

Es claro que estás olvidando una barra de separación:
Código PHP:
Ver original
  1. // MAL
  2. echo $_SERVER['DOCUMENT_ROOT'].$fotoArticulo;
  3.  
  4. // BIEN
  5. echo $_SERVER['DOCUMENT_ROOT'].'/'.$fotoArticulo

¿La ruta que imprime es la correcta?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:20.