Caminos para imágenes utilizando Apache con Windows
Pregunta
Tengo un problema con los enlaces probar localmente usando Apache con Windows. Los enlaces finales tienen el siguiente formato:
file:///C:/Documents and Settings/USUARIO/My Documents/xampp/htdocs/my_website/images/january/my_image.jpg
Las imágenes no muestran. Sin embargo, si yo copio directamente el src de la etiqueta img y pegarlo en el navegador (Firefox), la imagen aparece.
que generan los enlaces utilizando el siguiente código:
defino el directorio de imágenes usando: define(IMAGE_DIR, dirname(__FILE__).'/images/');
Luego utilizo el siguiente dar formato a la ruta:
$imgPath = IMAGE_DIR.$month.$img;
if($localServer)
{
$imgPath = str_replace('/','\\', $imgPath);
$imgPath = 'file:///'.$imgPath;
}
Lo que estoy haciendo mal?
Solución
Estás generando fuentes de imagen que las URLs uso file://
en una página que se cargan desde un servidor web. URL de archivos indicar al navegador para cargar un archivo directamente desde el disco sin hacer una petición al servidor web. Por razones de seguridad, Firefox y otros navegadores no permiten páginas servidas por un servidor web para hacer referencia a archivos locales, por lo que no muestran las imágenes. Las personas que acceden a su sitio de forma remota no podrán acceder a los archivos ya sea porque el origen de la imagen podría ser una referencia a un camino en su ordenador.
Para obtener las imágenes aparezcan, usted tiene que cambiar sus fuentes de imágenes para referirse a los lugares en el servidor web, por ejemplo images/january/my_image.jpg
o /images/january/my_image.jpg
.
images/january/my_image.jpg
será interpretado por el navegador web en relación con que se solicita la página. Por ejemplo, si la imagen aparece en la página en http://localhost/page1.php
, entonces el navegador solicitará http://localhost/images/january/my_image.jpg
. Sin embargo, si la imagen se utiliza en una página en http://localhost/subdir/page1.php
, el navegador solicitará http://localhost/subdir/images/january/my_image.jpg
lugar.
/images/january/my_image.jpg
siempre será interpretado en relación con la raíz del sitio web. El navegador web solicitará http://localhost/images/january/my_image.jpg
para cualquier página en http://localhost
.
También puede utilizar una URL absoluta si necesita hacer referencia a una imagen en otro servidor web, por ejemplo, http://otherhost/images/january/my_image.jpg
.
Otros consejos
Es mejor utilizar la constante "DIRECTORY_SEPARATOR" en lugar de '/' o '\'