Foros del Web » Programando para Internet » PHP »

Como acceder a una carpeta en un host a través de MySQL y PHP

Estas en el tema de Como acceder a una carpeta en un host a través de MySQL y PHP en el foro de PHP en Foros del Web. Buenas a todos! Este es mi primer post por aquí. Tengo un pequeño problema y espero que podais ayudarme. Vereis, estoy intentando hacer un pequeño ...
  #1 (permalink)  
Antiguo 19/07/2012, 07:03
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Como acceder a una carpeta en un host a través de MySQL y PHP

Buenas a todos!

Este es mi primer post por aquí. Tengo un pequeño problema y espero que podais ayudarme.

Vereis, estoy intentando hacer un pequeño programa en PHP que se conecte a un host que tengo contratado y que una vez allí, me enumere el número de archivos que tengo en cierta carpeta.

Estoy conectado en mi servidor(local) y quiero acceder por PHP a otro servidor(remoto) y una vez conectado al remoto, poder moverme por él y acceder a las carpetas del servidor remoto

Código PHP:
<?php
$link 
mysql_connect($dbhostR$dbuserR$dbpasswdR);
mysql_select_db($dbnameR$link);
if (
mysql_errno()) {
    
printf("Fallo de conexi&oacute;n: %s\n"mysql_error());
    exit();
}

?>
El problema es que no consigo moverme por el servidor remoto. ¿Alguna idea?
  #2 (permalink)  
Antiguo 19/07/2012, 07:56
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como acceder a una carpeta en un host a través de MySQL y PHP

1 - el que te conectes a un MySQL remoto no quiere decir que tengas acceso al sistema de archivos de dicho servidor remoto, MySQL es un SDBMS y NADA tiene que ver con el sistema de archivos del servidor, su objetivo es gestionar la base de datos, no el Sistema.

2 - para acceder a los directorios de un servidor remoto, debes de usar un protocolo para ello, sea FTP, SSH, entre otros
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 19/07/2012, 08:04
 
Fecha de Ingreso: noviembre-2010
Mensajes: 113
Antigüedad: 13 años, 5 meses
Puntos: 10
Respuesta: Como acceder a una carpeta en un host a través de MySQL y PHP

Hola jonasgv!
Creo que te estás confundiendo... El código que has puesto es para conectarte a la base de datos mysql, no a un directorio del hosting.
Para contar los archivos de una carpeta de tu hosting crea un archivo php (llamado por ejemplo contar.php) que contenga:
Código PHP:
Ver original
  1. <?php
  2. $dir = "ruta/a/la/carpeta/que/quieras";
  3. $files = glob($dir.'/*');
  4. echo "La carpeta " . $dir . " contiene " . count($files) . " archivos.";

Y SUBELO AL HOSTING! Te serà mucho más fácil que hacerlo desde tu máquina local.
Luego visita tu.hosting.com/contar.php para ejecutar el script y ver el resultado.

SUERTE!
  #4 (permalink)  
Antiguo 20/07/2012, 00:42
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Como acceder a una carpeta en un host a través de MySQL y PHP

Muchas gracias por las respuestas.

Entonces, por lo que me habéis dicho, no puedo "navegar" entre directorios de una carpeta en un host desde mi equipo a través de Shell, ¿cierto?

Por la solución que me has facilitado, kanutocm, la idea de crear el "contador" en el propio host es buena pero no se ajusta a lo que busco.

Verás, tengo una copia de mi web en un servidor local y luego en el host, la versión que todo el mundo ve. Me he creado con HTML y PHP una web local para comparar los archivos que tengo en local y los que tengo en el host.
Los que tengo en local, ningún problema, obtengo el número de archivos y la fecha del último archivo. Ahora, querría obtener esa misma información con los archivos de una carpeta en concreto del host.

¿Podría hacerme una función PHP en el host que devuelva un valor y que pueda quedarme con dicho valor en local?

Espero haberme explicado lo mejor posible!

PD: Para que pueda quedar mejor lo que quiero explicar, esto es el código que actualmente tengo (y no funciona)

Código PHP:
Ver original
  1. // establecer una conexion basica
  2. $conn_id = ftp_connect($ftp_server);
  3.  
  4. // iniciar sesion con nombre de usuario y contrasena
  5. $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  6.  
  7. // cambiar al directorio public_html/images
  8. ftp_chdir($conn_id, 'public_html/images');
  9.  
  10. // contar el numero de archivos que tengo dentro del directorio
  11. $files = glob($conn_id.'/*');
  12.  
  13. echo "La carpeta " . $conn_id . " contiene " . count($files) . " archivos.";
  14.  
  15. // cerrar la conexion ftp
  16. ftp_close($conn_id);

Última edición por jonasgv; 20/07/2012 a las 02:03
  #5 (permalink)  
Antiguo 20/07/2012, 03:23
 
Fecha de Ingreso: noviembre-2010
Mensajes: 113
Antigüedad: 13 años, 5 meses
Puntos: 10
Respuesta: Como acceder a una carpeta en un host a través de MySQL y PHP

prueba esto, con el siguiente código obtienes un array con las carpetas y archivos de un directorio FTP
Código PHP:
Ver original
  1. <?php
  2. // establecer una conexión básica
  3. $conn_id = ftp_connect($ftp_server);
  4.  
  5. // iniciar sesión con nombre de usuario y contraseña
  6. $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  7.  
  8. // obtener la lista de archivos de /
  9. $rawfiles = ftp_rawlist($conn_id, '/');
  10.  
  11. // cerrar la conexión ftp
  12. ftp_close($conn_id);
  13.  
  14. ?>

Luego, una vez tengas el array puedes parsearlo con el siguiente código:
Código PHP:
Ver original
  1. <?php
  2. // here the magic begins!
  3. $structure = array();
  4. $arraypointer = &$structure;
  5. foreach ($rawfiles as $rawfile) {
  6.     if ($rawfile[0] == '/') {
  7.         $paths = array_slice(explode('/', str_replace(':', '', $rawfile)), 1);
  8.         $arraypointer = &$structure;
  9.         foreach ($paths as $path) {
  10.             foreach ($arraypointer as $i => $file) {
  11.                 if ($file['text'] == $path) {
  12.                     $arraypointer = &$arraypointer[ $i ]['children'];
  13.                     break;
  14.                 }
  15.             }
  16.         }
  17.     } elseif(!empty($rawfile)) {
  18.         $info = preg_split("/[\s]+/", $rawfile, 9);      
  19.         $arraypointer[] = array(
  20.             'text'   => $info[8],
  21.             'isDir'  => $info[0]{0} == 'd',
  22.             'size'   => byteconvert($info[4]),
  23.             'chmod'  => chmodnum($info[0]),
  24.             'date'   => strtotime($info[6] . ' ' . $info[5] . ' ' . $info[7]),
  25.             'raw'    => $info
  26.             // the 'children' attribut is automatically added if the folder contains at least one file
  27.         );
  28.     }
  29. }
  30.  
  31. // in $structure is all the data
  32. print_r($structure);
  33.  
  34. // little helper functions
  35. function byteconvert($bytes) {
  36.     $symbol = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
  37.     $exp = floor( log($bytes) / log(1024) );
  38.     return sprintf( '%.2f ' . $symbol[ $exp ], ($bytes / pow(1024, floor($exp))) );
  39. }
  40.  
  41. function chmodnum($chmod) {
  42.     $trans = array('-' => '0', 'r' => '4', 'w' => '2', 'x' => '1');
  43.     $chmod = substr(strtr($chmod, $trans), 1);
  44.     $array = str_split($chmod, 3);
  45.     return array_sum(str_split($array[0])) . array_sum(str_split($array[1])) . array_sum(str_split($array[2]));
  46. }
  47.  
  48. ?>

Así, tendrás un array multidimensional ($structure) que contendrá toda la información de cada archivo y carpeta.

Todo el código está sacado de manual oficial de PHP, no es mío
Te dejo el enlace para que le eches un vistazo: http://www.php.net/manual/es/function.ftp-rawlist.php
  #6 (permalink)  
Antiguo 20/07/2012, 04:35
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Como acceder a una carpeta en un host a través de MySQL y PHP

Gracias kanutocm

He probado el usar la función ftp_rawlist y me da el número de archivos todo correcto

Última edición por jonasgv; 20/07/2012 a las 06:13
  #7 (permalink)  
Antiguo 24/07/2012, 05:27
 
Fecha de Ingreso: noviembre-2010
Mensajes: 113
Antigüedad: 13 años, 5 meses
Puntos: 10
Respuesta: Como acceder a una carpeta en un host a través de MySQL y PHP

Cita:
Iniciado por jonasgv Ver Mensaje
Gracias kanutocm

He probado el usar la función ftp_rawlist y me da el número de archivos todo correcto
Me alegra haberte sido de ayuda

Etiquetas: mysql, hosts, carpetas
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 22:40.