Problema con opendir();

Iniciado por Hacklinx, 11 Febrero 2014, 14:24 PM

0 Miembros y 1 Visitante están viendo este tema.

Hacklinx

Hola a todos, llevo tiempo intentando crear una página que muestre los archivos que subo a un determinado directorio, pero ocurren cosas muy estrañas:

<?php
$direccion="misdatos/";
$directorio = opendir($direccion);
while ($archivo = readdir($directorio))
{
$fp = fopen($archivo,"r");
$texto = fread($fp, filesize($archivo));
echo "<div id=\"container1\">";
echo $texto;
echo "<hr SIZE=3>";
echo "</div>";
echo "<br>";
}
?>

Según este código el script debería mostrar solo, los archivos que se encuentren en ese directorio, vamos a ver antes de nada os cuento las estructuras de mis directorios.

Tengo el servidor en webhost y me conecto por filezilla, está la carpeta raíz:

/

Dentro de ella esta la de public_html:

/public_html

Allí tengo el index.php, y recursos de la página web.

Dentro de ella se encuentra misdatos:

/public_html/misdatos

Que solo contiene los archivos que quiero mostrar, pero me salen estos errores:


PHP Error Message

Warning: fopen(ejemplo2.ko) [function.fopen]: failed to open stream: No such file or directory in /home/user/public_html/index.php on line 63

Free Web Hosting

PHP Error Message

Warning: filesize() [function.filesize]: stat failed for ejemplo2.ko in /home/user/public_html/index.php on line 64

Free Web Hosting

PHP Error Message

Warning: fread(): supplied argument is not a valid stream resource in /home/user/public_html/index.php on line 64

Free Web Hosting

No se encontró el directorio es el error, ¿alguna idea?

He probado también a poner:

$direccion="/public_html/misdatos/";

Y me sale el mismo error que no encuentra el directorio o no se que pasa.

Luego copio los archivos de misdatos en public_html y el código del principio me muestra solo los datos de misdatos ahora si los muestra, es muy raro.

No se que hacer.

Edito: Parece que solo me las lee cuando están dentro del directorio del index.php, luego como podemos entonces acceder a directorios de dentro de public_html para poderlos usar o mostrar su contenido.

Edito otra vez: Además me aparecen 2 archivos que no se encuentran en el directorio misdatos. que son "." y ".." ??
Saludos.

Hacklinx

Saludos gente, visto que no encontré solución decidí meterlo todo en el directorio public_html, y mostrar solo los de la terminación .ko, de tal forma:

$trozos = explode(".", $archivo);
$extension = end($trozos);
if(strcmp($extension,"ko")==0)
...

Solucionado, no está mal para descubrir php de hace solo un día :)

Saludos