lunes, 17 de enero de 2011

Función readfile() en PHP: no muestra nada

Siguiendo con los pequeños ejercicios del curso sobre Web 2.0 nos sugieren que realicemos una pequeña página web que simplemente muestre un feedback de alguna página, todo a través de RSS. Como son tan sencillos los ejercicios tan solo nos proponen acceder a la web http://www.rssinclude.com/ para conseguir el código fuente y ejecutarlo en nuestra mini-página sin necesidad de ningun esfuerzo.

Claro está que lo de ningun esfuerzo no se ha cumplido, ya que sino no estaría escribiendo esta entrada.

Pues bien:
1.- Creamos nuestra mini-página web con un muy sencillo código:

<html>
<head><title>Curso WEB 2.0: Segundo ejercicio entrega</title></head>
<body>
<h1>Curso WEB 2.0: Segundo ejercicio entrega</h1>
<h2>Un primer contacto con la Web 2.0</h2>
<h3>Codigo generado con PHP</h3>
</body>
</html>

Y guardamos el archivo como index.php .

2.- Acudimos a la web que nos facilitan http://www.rssinclude.com/, en concreto a la sección para editar nuestra RSSBoox:
http://www.rssinclude.com/my_rssboxes/edit_box?id=201579&tab=feeds

3.- Introducimos una dirección feedback, por ejemplo de Yahoo http://rss.news.yahoo.com/rss/internet y presionamos sobre AddFeed

4.- Gracias a la web podremos ver un ejemplo de como quedará nuestra RSSBox.

5.- Presionamos sobre la pestaña Include! y aparecerán los diferentes códigos fuente para integrar la RSSBox (JavaScript, PHP, iFrame, ...)
<?php
readfile('http://output52.rssinclude.com/output?type=php&id=201464&hash=74fd6675161c35313f7aec9c5d53abd2');
?>

NOTA: Es necesario registrarse en la web para obtener el código fuente. El registro apenas dura un minuto.
NOTA2: Por cada dirección feedback que incluyamos obtendremos diferente código fuente

6.- A nosotros nos interesa el código PHP, de modo que lo copiamos y pegamos en nuestra mini-página web:

<html>
<head><title>Curso WEB 2.0: Segundo ejercicio entrega</title></head>
<body>
<h1>Curso WEB 2.0: Segundo ejercicio entrega</h1>
<h2>Un primer contacto con la Web 2.0</h2>
<h3>Codigo generado con PHP</h3>
<?php readfile('http://output52.rssinclude.com/output?type=php&id=201464&hash=74fd6675161c35313f7aec9c5d53abd2');
?>

</body>
</html>

Guardamos, subimos/copiamos a nuestro servidor y abrimos la página.

¿Y qué ocurre? - Pues ocurre que la página se muestra así:



Y, claramente, no es lo buscamos.

¿Qué ha pasado? ó ¿Qué esta fallando?

Resulta que la función readfile() de PHP obtiene los bytes del archivo recibido y los devuelve, en este caso el archivo está alojado en la web http://rssinclude.com. Si la lectura del archivo es errónea devuelve un error que se debería de mostrar por pantalla.

En nuestro caso no se muestra ningún error, de modo que insistimos en preguntarnos qué es lo que falla. Y llegamos a la conclusión que el problema está en que el servidor no ejecuta la función en ningún momento, simplemente la ignora.
Llegando a esta sencilla conclusión es fácil pensar que el problema resida en que la función esté desactivada en nuestro servidor, y sobretodo estando el archivo alojado en un hosting contratado.

¿Qué podemos hacer entonces? - Pues ejecutar el archivo index.php de forma "casera".
- Como tenemos Apache instalado en nuestro sistema, acudimos a la carpeta
C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs

y copiamos nuestro archivo index.php en ella.
- Arrancamos Apache
- Comprobamos en un navegador http://localhost/index.php
- Y voilà!




CONCLUSIÓN
Si el servidor donde hacemos las pruebas está alojado en un hosting contratado, habrá que asegurarse de que tenga las opciones que necesitamos activadas, en este caso activada la ejecución de la función readfile() para PHP.
Si no hay forma de averiguarlo, siempre podemos ejecutar el archivo sobre un servidor local.

1 comentario:

  1. glo como se formatea el ordenador?
    tengo copia en 2 cds de version original de wuindos vista un beso

    ResponderEliminar