Tengo un problema extraño con la función PHP file_exists()
en un servidor Linux.PHP file_exists() devuelve falso en algunos archivos
Al usar file_exists para verificar que la imagen esté en el servidor antes de editarla, a veces fallará sin motivo aparente. Las rutas de archivos son absolutas y las he comprobado a través de ssh que son 100% en la ruta especificada.
Las imágenes que fallen file_exists() seguirán mostrándose en el navegador. El código no hace una diferencia, un var_dump(file_exists('/home/user/path/image.jpg'));
básico devolverá falso.
Los permisos/propiedades de archivos son exactamente los mismos en todas las imágenes y directorios principales. El modo seguro está desactivado. No hay errores de PHP Estoy perplejo ahora y no estoy seguro de qué buscar.
Así es como las imágenes están en el servidor:
/home/user/public_html/images/location/1.jpg -- will work
/home/user/public_html/images/location2/1.jpg -- won't work
/home/user/public_html/images/location2/2.jpg -- will work
tengo acceso root en el servidor de modo que si alguien tiene alguna idea con mucho gusto probarlos.
Gracias de antemano por su consejo, avíseme si necesita información adicional.
EDITAR: Para responder las preguntas en los comentarios a continuación.
- Sí, las imágenes están allí, definitivamente no es el almacenamiento en caché.
- El modo seguro está desactivado (ya lo mencioné en mi publicación).
- Las rutas no son enlaces simbólicos, sino enlaces directos a la ubicación de los archivos en el servidor.
- Phoenix, es consistente. Los archivos de trabajo siempre funcionarán y viceversa. Los nombres son 1.jpg, 1.thumb.jpg, etc. por lo que no es un problema con caracteres o espacios extraños.
[[email protected] ~]# ls -l /home/user/public_html/images/Hawkhurst/
total 92
-rwxr-xr-x 1 user user 24501 Aug 11 2009 1.jpg
-rwxr-xr-x 1 user user 1672 Aug 11 2009 1.thumb.jpg
-rwxr-xr-x 1 user user 14983 Aug 11 2009 2.jpg
-rwxr-xr-x 1 user user 1370 Aug 11 2009 2.thumb.jpg
-rwxr-xr-x 1 user user 17238 Aug 11 2009 3.jpg
-rwxr-xr-x 1 user user 1453 Aug 11 2009 3.thumb.jpg
-rwxr-xr-x 1 user user 14168 Aug 11 2009 4.jpg
-rwxr-xr-x 1 user user 1464 Aug 11 2009 4.thumb.jpg
[[email protected] ~]#
He tratado con permisos 777 y 755 que hacen ninguna diferencia. Por ejemplo en esta carpeta, 1 y 2 pueden funcionar mientras 3 & 4 no ...
Realicé una prueba rápida para ver cómo funciona apache/php y se ejecutan como nadie, pero esto no explica por qué algunas imágenes funcionan y otras no con los mismos permisos exactos.
EDIT 2: Problema resuelto. No puedo creer lo estúpido que era, algunos de los nombres de archivo que se llamaron desde una base de datos tenían espacios al final ... Quienquiera que haya hecho el script original no ejecutó ningún tipo de limpieza antes de guardarlos.
Es el archivo realmente allí? Quizás veas imágenes debido al almacenamiento en caché. –
¿Tiene safe_mode habilitado? – Mchl
'Esta función devolverá FALSE para enlaces simbólicos que apuntan a archivos no existentes. – ajreal