Foros del Web » Programando para Internet » PHP »

Mostrar Imágenes

Estas en el tema de Mostrar Imágenes en el foro de PHP en Foros del Web. Hola, no se si esto va aquí, ya que creo que es un problema de permisos y no de programación. Os cuento, he creado un ...
  #1 (permalink)  
Antiguo 28/05/2010, 08:28
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Mostrar Imágenes

Hola, no se si esto va aquí, ya que creo que es un problema de permisos y no de programación. Os cuento, he creado un script que yo le digo la ruta de una carpeta y me muestra las imágenes de esa carpeta, el problema es que, no me muestra las imágenes pero me muestra el cuadro con el tamaño de la imagen, con el icono de la imagen no encontrada. Supongo que sera un problema de permisos, tengo ubuntu como sistema operativo. Os pongo también el código , por si acaso:

Código PHP:
<?php

$ruta 
"/home/jota/Escritorio/123/"// Indicar ruta
$filehandle opendir($ruta); // Abrir archivos
while ($file readdir($filehandle)) {
        if (
$file != "." && $file != "..") {
                
$tamanyo GetImageSize($ruta.$file);
                echo 
'<p><img src="'.$ruta.$file.'"><br></p>';
        } 

closedir($filehandle); // Fin lectura archivos
?>
Si es un problema de permisos, no se como darselos, he probado ha hacer en la terminal "chmod 777 ./Escritorio/123/*" me cambia los permisos, pero no me las muestra.

Última edición por Jota_sk; 28/05/2010 a las 08:50
  #2 (permalink)  
Antiguo 28/05/2010, 08:56
Avatar de martin0341  
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario - Santa Fe
Mensajes: 296
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Mostrar Imágenes

Debe estar mal la ruta, no creo que sea de permisos.
Fijate que linux diferencia mayusculas de minisculas.
Suerte con eso.
  #3 (permalink)  
Antiguo 28/05/2010, 09:05
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

La ruta es correcta, porque me muestra el icono de las 3 imágenes que dice que no encuentra.
  #4 (permalink)  
Antiguo 28/05/2010, 09:07
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Mostrar Imágenes

Prueba conun var_dump();

$ruta = "/home/jota/Escritorio/123/"; // Indicar ruta
$filehandle = opendir($ruta);

//deberia ver los nombres de las imagenes alli, si no
echo "<pre>";
var_dump($filehandle);
echo "</pre>";


Quiza si estas dentro de una carpeta que esta en el mismo directroio que esta "home"... haz asi:

"../home/jota/Escritorio/123/"
  #5 (permalink)  
Antiguo 28/05/2010, 09:15
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

Si que veo los nombres de los archivos, porque tambien he hecho un

Código PHP:
                echo $ruta.$file
y me muestra la ruta y el nombre de las imagenes "/home/jota/Escritorio/123/1.jpg" por ejemplo. Si pongo lo de "var_dump($filehandle);" me muestra en pantalla lo siguiente "resource(3) of type (stream)" que es correcto, porque por ahora solo hay 3 imagenes en la carpeta.
  #6 (permalink)  
Antiguo 28/05/2010, 09:16
Avatar de martin0341  
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario - Santa Fe
Mensajes: 296
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Mostrar Imágenes

que te muestra esto:

Código PHP:
Ver original
  1. $tamanyo = GetImageSize($ruta.$file);
  #7 (permalink)  
Antiguo 28/05/2010, 09:17
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

nada, eso al final, lo he quitado.

Ahora mismo tengo esto:

Código PHP:
<?php

$ruta 
"/home/jota/Escritorio/123/"// Indicar ruta
$filehandle opendir($ruta); // Abrir archivos
echo "<pre>";
var_dump($filehandle);
echo 
"</pre>";
while (
$file readdir($filehandle)) {
        if (
$file != "." && $file != "..") {
                echo 
'<div align="center"><img src="'.$ruta.$file.'"></div>';
                echo 
$ruta.$file;
                echo 
'<hr>';
        } 

closedir($filehandle); // Fin lectura archivos

?>
  #8 (permalink)  
Antiguo 28/05/2010, 09:28
Avatar de martin0341  
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario - Santa Fe
Mensajes: 296
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Mostrar Imágenes

A ver. anda a donde no te muestra la imagenes, boton derecho, propiedades y vemos la direccion url, fijate si esta apuntando bien, o sea si va a la carpeta que contiene las imagenes.
Es raro que sea un problemas de permisos, creo que directamente no te dejaria leer con el readdir.

Decime como salio la prueba esta que te digo
  #9 (permalink)  
Antiguo 28/05/2010, 09:38
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

He hecho lo que me has dicho, y me muestra lo siguiente "http://localhost/home/jota/Escritorio/123/zooey-deschanel2.jpg". Ahora entiendo el error, pero no se como solucionarlo.
  #10 (permalink)  
Antiguo 28/05/2010, 09:39
Avatar de martin0341  
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario - Santa Fe
Mensajes: 296
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Mostrar Imágenes

Cual es el error entonces??
Decime que te ayudo
  #11 (permalink)  
Antiguo 28/05/2010, 09:48
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

pues que las imagenes no estan en la ruta "http://localhost/home/jota/Escritorio/123/" si no "/home/jota/Escritorio/123/" la ruta de mi pc, el equivalente a windows sería "c:/documents and settings/ jota/escritorio/123/".

Pero si pongo de ruta lo siguiente "../../Escritorio/123/" Me muestra lo mismo que antes, los 3 iconos de que no se encontraron las imagenes, pero sabe que hay 3 imagenes dentro de esa carpeta. y si le hago boton derecho -> propiedades, me muestra lo siguiente "http://localhost/Escritorio/123/zooey-deschanel2.jpg".

Las imagenes estan en /home/jota/Escritorio/123/imagenes.jpg
Y el index.php esta en /home/jota/www/Imagenes/index.php
  #12 (permalink)  
Antiguo 28/05/2010, 09:51
Avatar de martin0341  
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario - Santa Fe
Mensajes: 296
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Mostrar Imágenes

Usando la funcion list con el separador / podes parsear la ruta, o sea quitar la parte del localhost quedarte con la parte de la ruta que quieras.
Hace que la ruta sea relativa y no absoluta como es ahora.
No se si me explico.
  #13 (permalink)  
Antiguo 28/05/2010, 09:53
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

Si te digo la verdad no lo he entendido muy bien. Pon un ejemplo de la función list, si puedes. Muchas gracias
  #14 (permalink)  
Antiguo 28/05/2010, 09:56
Avatar de martin0341  
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario - Santa Fe
Mensajes: 296
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Mostrar Imágenes

Antes que eso, porque la ruta es empieza con home/.../ ??
Donde esta el archivo que llama a estas imagenes? Me refiero a la ruta fisica.
  #15 (permalink)  
Antiguo 28/05/2010, 10:02
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

No he entendido muy bien tu último post, pero si empiezo la ruta así "home/jota/....." no me muestra absolutamente nada. La ruta se empieza por home, porque en ubuntu, todos los archivos personales y capretas personales, de uan cuenta, se situenta dentro de esta carpeta y dentro de la carpeta del usuario. Y todo empieza por "/".
Te pongo una equivalencia entre windows y ubuntu.
/ -> sería como si el c:
/home/jota -> sería como si c:/document and settings/jota
  #16 (permalink)  
Antiguo 28/05/2010, 10:45
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Mostrar Imágenes

Perdon me equivoque en la ubicacion del var_dump()
Ejecuta este codigo a ver que te muestra


<?php

$ruta = "/home/jota/Escritorio/123/"; // Indicar ruta
$files=scandir($ruta );
echo "<pre>";
var_dump($files);
echo "</pre>";

?>





//otra cosa: en windows debes filtrar tambien, un archivo molesto: Thumbs.db

if ($file != "." && $file != ".." && $file != "thumbs.db")
  #17 (permalink)  
Antiguo 28/05/2010, 12:40
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

Me muestra
Código PHP:
array(5) {
  [
0]=>
  
string(1"."
  
[1]=>
  
string(2".."
  
[2]=>
  
string(30"1243630050-zooey-deschanel.jpg"
  
[3]=>
  
string(19"zooey-deschanel.jpg"
  
[4]=>
  
string(20"zooey-deschanel2.jpg"

  #18 (permalink)  
Antiguo 28/05/2010, 13:30
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Mostrar Imágenes

Ahórrate el dolor de cabeza, y ubica las imágenes dentro del directorio www.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #19 (permalink)  
Antiguo 28/05/2010, 13:48
 
Fecha de Ingreso: abril-2007
Ubicación: Zamora España
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Respuesta: Mostrar Imágenes

Como bien dices es un problema de permisos o de usuarios.

Haz un

Código:
ls -lF /home/jota/Escritorio/123/*.jpg
y comprueba los permisos (deben ser al menos 444) y que no los hayas creado como root o algo por el estilo.

Saludos.
  #20 (permalink)  
Antiguo 28/05/2010, 14:01
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Mostrar Imágenes

Ya esta entonces:

Código PHP:


<?php


$ruta 
"/home/jota/Escritorio/123/"// Indicar ruta 
$files=scandir($ruta); 
/* 
echo "<pre>"; 
var_dump($files); 
echo "</pre>"; 
*/ 

foreach($files as $img){ 
if(
$img != "." && $img != ".." && $img != "Thumbs.db"){ 
echo 
"<br /><img src='/home/jota/Escritorio/123/".$img."' />"




?>

Última edición por wiwi74; 28/05/2010 a las 14:23
  #21 (permalink)  
Antiguo 28/05/2010, 14:23
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

Cita:
Iniciado por carlosZI Ver Mensaje
Como bien dices es un problema de permisos o de usuarios.

Haz un

Código:
ls -lF /home/jota/Escritorio/123/*.jpg
y comprueba los permisos (deben ser al menos 444) y que no los hayas creado como root o algo por el estilo.

Saludos.
Lo he puesto en la terminal y me dice:
Código:
-rwxrwxrwx 1 jota jota 103029 2010-05-28 16:08 /home/jota/Escritorio/123/1243630050-zooey-deschanel.jpg*
-rw-r--r-- 1 jota jota 116708 2010-05-28 16:08 /home/jota/Escritorio/123/zooey-deschanel2.jpg
-rw-r--r-- 1 jota jota  24192 2010-05-28 16:08 /home/jota/Escritorio/123/zooey-deschanel.jpg
Solo tengo 3 imágenes, pero son para pruebas, a la primera imagen le di permiso 777, para ver si me la mostraba, pero tampoco.
No se puede incluir al usuario apache o alguno de esos, dentro del grupo jota?

Lo que quiero hacer es que me muestre todas las imágenes que tengo en la carpeta Imágenes de mi carpeta personal.
  #22 (permalink)  
Antiguo 28/05/2010, 14:28
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Mostrar Imágenes

Estructurando una ruta igual a mi me dio un error:

Auque a ti el var_dump() te mostro las imagenes

Prueba asi sino:

Quitando al barra, ya que no subes a un directorio ../


Código PHP:



<?php 


$ruta 
"home/jota/Escritorio/123/"// Indicar ruta  
$files=scandir($ruta);  
/*  
echo "<pre>";  
var_dump($files);  
echo "</pre>";  
*/  

foreach($files as $img){  
if(
$img != "." && $img != ".." && $img != "Thumbs.db"){  
//aqui tambien quitala
echo "<br /><img src='home/jota/Escritorio/123/".$img."' />"
//o vuelve a probar con esto sin modificar la ruta en $ruta
//echo "<br /><img src='/home/jota/Escritorio/123/".$img."' />";  
}  
}  

?>
  #23 (permalink)  
Antiguo 28/05/2010, 14:35
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

Se le quito la barra al principio, directamente no me muestra nada. Y si hago lo del comentario del if, tampoco me muestra nada. Como dijo carlosZI, debe ser un problema de permisos o de usuarios, porque me dice que hay archivos pero no los muestra.
  #24 (permalink)  
Antiguo 28/05/2010, 16:43
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Mostrar Imágenes

Y a ver si esto te muestra algo:
Si ni siquiera te muestra los permisos es un poblema de rutas:



Código PHP:




<?php


$ruta 
"/home/jota/Escritorio/123/"// Indicar ruta 
//$ruta = "img/"; // Indicar ruta 

$files=scandir($ruta ); 

echo 
"<pre>"
var_dump($files); 
echo 
"</pre>"



foreach(
$files as $img){ 
if(
$img != "." && $img != ".." && $img != "Thumbs.db"){ 

//echo "<br /><img src='home/jota/Escritorio/123/".$img."' />"; 

//RUTA AL ARCHIVO
$path_file "/home/jota/Escritorio/123/".$img."";



echo 
"<p />";
echo 
substr(sprintf('%o'fileperms($path_file)), -4);
echo 
"<br />";
echo 
substr(sprintf('%o'fileperms($path_file)), -4);
echo 
"<br />";


$perms fileperms($path_file);

if ((
$perms 0xC000) == 0xC000) {
    
// Socket
    
$info 's';
} elseif ((
$perms 0xA000) == 0xA000) {
    
// Enlace Simbólico
    
$info 'l';
} elseif ((
$perms 0x8000) == 0x8000) {
    
// Regular
    
$info '-';
} elseif ((
$perms 0x6000) == 0x6000) {
    
// Bloque especial
    
$info 'b';
} elseif ((
$perms 0x4000) == 0x4000) {
    
// Directorio
    
$info 'd';
} elseif ((
$perms 0x2000) == 0x2000) {
    
// Caracter especial
    
$info 'c';
} elseif ((
$perms 0x1000) == 0x1000) {
    
// Pipe FIFO
    
$info 'p';
} else {
    
// Desconocido
    
$info 'u';
}

// Dueño
$info .= (($perms 0x0100) ? 'r' '-');
$info .= (($perms 0x0080) ? 'w' '-');
$info .= (($perms 0x0040) ?
            ((
$perms 0x0800) ? 's' 'x' ) :
            ((
$perms 0x0800) ? 'S' '-'));

// Grupo
$info .= (($perms 0x0020) ? 'r' '-');
$info .= (($perms 0x0010) ? 'w' '-');
$info .= (($perms 0x0008) ?
            ((
$perms 0x0400) ? 's' 'x' ) :
            ((
$perms 0x0400) ? 'S' '-'));

// Mundo
$info .= (($perms 0x0004) ? 'r' '-');
$info .= (($perms 0x0002) ? 'w' '-');
$info .= (($perms 0x0001) ?
            ((
$perms 0x0200) ? 't' 'x' ) :
            ((
$perms 0x0200) ? 'T' '-'));

echo 
$info;

if(
is_file($path_file)){
if(
is_readable($path_file)){
echo 
"<br />El archivo puede ser leido.";
}else{
echo 
"<br />El archivo no puede ser leido.";
}
}else{
echo 
"<br />El archivo no existe.";
}







?>

Comenta que te muestra, copia y pega mejor...

Última edición por wiwi74; 28/05/2010 a las 16:59
  #25 (permalink)  
Antiguo 28/05/2010, 17:04
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

Hecho copio y pego:

Código PHP:
array(5) {
  [
0]=>
  
string(1"."
  
[1]=>
  
string(2".."
  
[2]=>
  
string(30"1243630050-zooey-deschanel.jpg"
  
[3]=>
  
string(19"zooey-deschanel.jpg"
  
[4]=>
  
string(20"zooey-deschanel2.jpg"
}

0777
0777
-rwxrwxrwx
El archivo puede ser leido
.

0644
0644
-rw-r--r--
El archivo puede ser leido.

0644
0644
-rw-r--r--
El archivo puede ser leido
  #26 (permalink)  
Antiguo 28/05/2010, 20:23
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Mostrar Imágenes

A mi me resulto asi:

Código PHP:


0666
-rw-rw-rw-
El archivo puede ser leido.
0666

0666
-rw-rw-rw-
El archivo puede ser leido.
0666

0666
-rw-rw-rw-
El archivo puede ser leido

Aqui explica bien el tema de que significa cada caracter -rw-rw-rw-:


http://www.au.cl/tutoriales/article.php?id=066


  #27 (permalink)  
Antiguo 28/05/2010, 20:42
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

Le acabo de poner los permisos a 666, y sigue sin mostrarme las imágenes. Incluso le he puesto 777 a la carpeta y a los archivos, y nada... sigue sin mostrarme las imágenes. Alguna otra solución? Muchas gracias a todos los que me están ayudando.
  #28 (permalink)  
Antiguo 28/05/2010, 21:06
Avatar de eZakto  
Fecha de Ingreso: julio-2008
Mensajes: 214
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Mostrar Imágenes

No deberías usar (o intentar usar) archivos fuera del directorio del servidor. Creo que no podrás solucionar el problema si no es trasladando las imágenes a un subdirectorio de tu www.

Saludos!
__________________
eZakto™
  #29 (permalink)  
Antiguo 29/05/2010, 03:24
 
Fecha de Ingreso: abril-2007
Ubicación: Zamora España
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Respuesta: Mostrar Imágenes

Puedes poner al usuario jota dentro del grupo apache (en realidad se llama www-data) pero al revés no es muy recomendable, ten en cuenta que cualquiera que pueda acceder con permisos del grupo www-data, tendría los tuyos. Tal vez deberías mirar para configurar user-dir, y evitar problemas relativos a acceder a ficheros fuera de tu home. Por cierto, recomiendo muy mucho el cherokee o el lighttpd frente al apache, "pero para gustos, colores."

Yo también muestro en mi web imágenes de un directorio con un código tal que así:

Código:
        $directorio=opendir($DIR_BASE."/".$fila[ID]."/");   // fila[] es la matriz devuelta por la consulta mysql

    while (false !== ($archivo = readdir($directorio)))
    {
          if ($archivo=='.' || $archivo=='..' || $archivo=='160' || $archivo=='640' ) continue; // estos son los directorios
          else
          {    echo "<a href=\"fotos.php?id=".$fila[ID]."&foto=".$archivo."\">
             <img src=\"".$DIR_BASE."/".$fila[ID]."/".$archivo."\" alt=\"foto\" border=\"0\" />
                 </a>";
          }
    }
    closedir($directorio);
y sólo me da problemas cuando los archivos no tienes permisos al menos de 444 (-r--r--r--), pero en tu caso, tal y como muestras no debería dártelos.

No entiendo porque no te los muestra.
  #30 (permalink)  
Antiguo 29/05/2010, 13:25
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mostrar Imágenes

Sinceramente, despues de tanto lio y tanta historia, optare por poner las imaganes dentro del directorio "www" y ahorrarme problemas de permisos y ya esta, aunque asi, tenga que tener dos veces las imagenes copiadas en distintas ubicaciones. Muchas gracias a todos por vuestra ayuda! Un saludo!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:28.