Friends, Entendidos en PHP4 y PHP5 y en temas de servidores, extiendo esta consulta porque ya creo que no es favorable darle tantas vueltas.
Estoy en proceso de migración de una web que esta en LAMP PHP4 a una LAMP PHP5 y tengo problemas con unas imágenes muy especiales que me conseguí en este servidor.
El caso es el siguiente:
http://www.notodohoteles.com/es/img_art.php/60_up es una imagen leída con el siguiente código:
<?php
……..
readfile($archivo)
?>
y produce esa salida. Está comprobado que la ruta del archivo es correcta y toda la pre-programación anterior esta perfecta. El archivo esta alojado en el disco duro y no es una imagen guardad en BD. Por cierto las imágenes no tienen extensión en el servidor y no responde al menos bajo Windows al cambio de extensión a “.jpg” pero funcionan muy bien sin extensión en el viejo servidor.
Ahora en el servidor nuevo: http://test.notodohoteles.com/es/img_art.php/60_up la salida es exactamente le misma pero la interpretación que hace el servidor de la imagen cuando se muestra donde debería estar no es correcta. Me explico:
En http://www.notodohoteles.com/es/index.php?link1=articulos_ficha&id=33 se muestran las imágenes perfectamente al principio del artículo pero …
En http://test.notodohoteles.com/es/index.php?link1=articulos_ficha&id=33 no se muestran!.
El código HTML que muestra las imágenes en ambos casos es:
<center>
<font face="Verdana" size="2">
<a href="" target="_self">
<img border="0" src="/es/img_art.php/59_up"/>
</a>
<br/>
</font>
</center>
Por ultimo el código PHP que lee el archive y los escribe en el buffer es:
<?
// Script que permite llamar a las fotos comunes de articulos para mostrarlas en cada idioma para stats segmentadas
//
// Por Paco Fern�ndez - Junio de 2006
//
// LA LLAMADA A LA PIEZA SER� DEL TIPO:
// http://www.notodohoteles.com/webphp2007/es/img.php/2222_1.jpg
if(!$lg) $lg="es";
include $_SERVER['DOCUMENT_ROOT']."/admin/rutas_".$lg.".php";
// Queremos el nombre de archivo, el idpieza y la extensi�n del archivo
$archivo = $var_url=$_SERVER['PATH_INFO']; // Tomamos la ruta de acceso
// Sacamos nombre archivo
// $array_url=explode('/',$var_url); // Nos quedamos con lo de despu�s del "pieza.php/" que es el nombre de archivo
// $archivo=$array_url[1];
// Sacamos extensi�n para cabecera
$array_ext=explode('.',$archivo);
$ext=$array_ext[1];
if( $peso = @filesize($ruta_img_art.$archivo) ) // Si existe incremento estad�sticas y cargo el archivo
{
// Saco cabecera seg�n la extensi�n y su peso
header("Accept-Ranges: bytes");
header("Content-Length: ".$peso);
if($ext=="gif") header("Content-type: image/gif");
if($ext=="jpg") header("Content-type: image/jpeg");
if ( @readfile($ruta_img_art.$archivo) ){
echo "Error al leer el archivo ".$ruta_img_art.$archivo;
exit;
} // cargo el archivo
}
else header('HTTP/1.0 404 Not Found'); // Si no existe doy salida de Not Found
?>
Dejo esto así de abierto por si alguien conoce un problema similar y sabe la solución, cualquier pregunta estaré dispuesto a investigar y responder.
Un saludo y gracias de antemano
Jose Antonio Pio Gil