Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Averiguar fecha de creación de un fichero en un servidor FTP

Estas en el tema de Averiguar fecha de creación de un fichero en un servidor FTP en el foro de PHP en Foros del Web. Buenos días compañeros. Tengo el problema de que necesito averiguar la fecha completa (dia, mes y sobretodo año) de creación (no la fecha de modificación) ...
  #1 (permalink)  
Antiguo 23/01/2018, 04:33
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 117
Antigüedad: 11 años, 9 meses
Puntos: 1
Averiguar fecha de creación de un fichero en un servidor FTP

Buenos días compañeros.

Tengo el problema de que necesito averiguar la fecha completa (dia, mes y sobretodo año) de creación (no la fecha de modificación) de un fichero alojado en el FTP.

La función php_mdtm no funciona en ese servidor, ya lo he probado, y haciendo un ftp_rawlist sólo devuelve el mes y el día, pero no el año, así que no sé por dónde conseguir el año también.

FTP_RAWLIST devuelve lo siguiente:
Código PHP:
Array
(
    [
0] => -rw-rw-rw-   1 operario 0         547557 Oct 18 09:14 fichero_ejemplo.pdf 
Se me ocurrió hacer una pequeña función, donde paso el mes actual, el mes que devuelve el rawlist y tratar de compararlos para poder determinar si es de este año o del anterior (no habrá ficheros más viejos de 12 meses), pero tampoco va a funcionar, puesto que si estamos en Enero, y le paso Enero como mes para buscar, no tengo forma de determinar si se refiere a Enero de este año o del año anterior.

Se os ocurre alguna "trampa" para poder sacar el año?
  #2 (permalink)  
Antiguo 23/01/2018, 05:32
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 117
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Averiguar fecha de creación de un fichero en un servidor FTP

Me respondo a mi mismo, ya que he encontrado una solución que me funciona... al menos por ahora parece que funciona:
Código PHP:
function compararFechas($fechaSinAnyo) {

  
$ahora date("Y-m-d H:i");
  
$anyoActual date("Y");
  
$anyosPosibles = array($anyoActual$anyoActual-1);

  
$fechaSinAnyo date("m-d H:i"$fechaSinAnyo);

  foreach(
$anyosPosibles as $anyoPosible) {
    
$fechaCompleta "$anyoPosible-$fechaSinAnyo";

    if (
$fechaCompleta <= $ahora) {
      
//echo "$fechaCompleta es igual, o menor, que ahora ($ahora), por tanto es una fecha válida<br>";
      
return $fechaCompleta;
    }
  }

Es bastante simple. En un array pongo el año actual y el año anterior. Recojo la fecha que devuelve el ftp_rawlist y que venía sin año. Dentro del foreach a esa fecha sin año, le añado "manualmente" tanto el año en curso, como el anterior, y las comparo con la fecha actual.

Si la fecha resultante es mayor que el día de hoy, significa que estamos hablando del futuro, por tanto es imposible, ya que no podemos tener un archivo con fecha de creación superior al momento actual. De modo que el bucle retorna sólo la fecha que puede ser válida, ya que siempre debe ser menor que la fecha de hoy.

Ojo, esta "trampa" sirve sólo cuando los años posibles son el actual y el año pasado, si hubiera más posibilidades este script no funcionaría puesto que habría dos años que podrían ser correctos.
  #3 (permalink)  
Antiguo 23/01/2018, 12:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.799
Antigüedad: 9 años, 6 meses
Puntos: 2124
Respuesta: Averiguar fecha de creación de un fichero en un servidor FTP

Aparentemente, Linux no guarda (o no permite acceso) la fecha de creación de archivos y solo puedes obtener la fecha de última modificación.

Usa filemtime() para obtener la fecha de última modificación como timestamp.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 29/01/2018, 07:51
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 117
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Averiguar fecha de creación de un fichero en un servidor FTP

Cita:
Iniciado por Triby Ver Mensaje
Aparentemente, Linux no guarda (o no permite acceso) la fecha de creación de archivos y solo puedes obtener la fecha de última modificación.

Usa filemtime() para obtener la fecha de última modificación como timestamp.
Sí, pero yo no necesito la fecha de modificación, sino la de creación, ya que necesito saber qué día entró el fichero en el FTP, no el día que en pudo, o no, ser modificado posteriormente ;)
  #5 (permalink)  
Antiguo 29/01/2018, 17:17
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.799
Antigüedad: 9 años, 6 meses
Puntos: 2124
Respuesta: Averiguar fecha de creación de un fichero en un servidor FTP

Entonces dependes de que tu sistema Linux guarde esa información y, además, te permita acceder a ella.

Podrías intentar:
1. Ejecutar stat nombre_de_archivo usando system() o exec()
2. Capturar la salida del comando anterior
3. Buscar la línea que contiene Birth y analizar para saber si te devuelve un valor adecuado
__________________
- León, Guanajuato
- GV-Foto



La zona horaria es GMT -6. Ahora son las 00:12.