Nueva pregunta

Pregunta:

Fecha: 26-01-2016 16:06:18 (En Español)

Descargar archivo externo y reemplazarlo[Resuelta]

Hola:

Tengo un archivo que requiere actualización diaria. Obviamente lo tendría que programar con cron.
El problema surge antes. Si lo hago manualmente, no hay problemas. Si lo hago con PHP los pasos aparentemente son correctos pero no llego a actualizar el nuevo archivo.

El código que tengo (y aparentemente cumple los pasos/mensajes "echo" pero no actualiza) es este:
<?php
$nombre_archivo = 'mi_archivo.xls';
unlink($nombre_archivo);
echo 'Archivo eliminado <br>';
$destino ='mi_archivo.xls';
$origen = 'http://la_web_externa.es/descargar_archivo.do?tipoBusqueda=0';
file_put_contents($destino,file_get_contents($origen));
echo 'Archivo reemplazado';
?>

El problema es algo más que la ruta ya que ni lo borra ni lo reemplaza

SOS y gracias
Etiquetas: Descarga Archivos (Download) - PHP - Pregunta Votos: 4 - Respuestas: 3 - Vistas: 14 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 26-01-2016 19:26:54 Hola Artzain, a simple vista se ve que el script PHP esta ok. Cuando dices "Si lo hago manualmente, no hay problemas", a qué te refieres? (a borrarlo manualmente o a ejecutar el script PHP manualmente?, estimo que es el primer caso).

    ¿Qué mensaje recibes si ejecutas el script PHP desde el navegado? (no desde el cron)

    Si no obtienes mensaje de error, prueba agrengado arriba del script las siguientes líneas:
    ini_set('display_errors', 1);
    error_reporting(-1);
    


    Quedo al aguardo de tus comentarios.

    Saludos!
      Votos: 5 - Link respuesta
     
  • Fecha: 27-01-2016 06:14:07 Gracias Fernando.

    Efectivamente me refería a ejecutar la página con el código expuesto.
    En local (con xampp) funciona.
    En el hosting fallan los permisos. Así que habrá que conversar con ellos y de paso habilitar el cron.

    Saludos.
      Votos: 2 - Link respuesta
     
  • Fecha: 27-01-2016 07:18:13 Hola Artzain, aquí adjunto tu código con algunos cambios: validaciones básicas y un aviso vía email ante una falla (los cambios son básico, pero creo que aportan valor al script).

    //configuración
    $emailAdmin = 'admin@email.com';
    $nombre_archivo = 'mi_archivo.xls';
    
    //doy permisos al archivo antes de borrarlo (ver de ajustar a los permisos necesarios):
    chmod($nombre_archivo, 0644); //<-- por lo general estos son los permisos correctos, pero si no te funciona prueba con un 0777
    
    if(!unlink($nombre_archivo)){
        mail($emailAdmin, 'CRON actualización de archivo: '.$nombre_archivo, 'Fallo la eliminación del archivo');
        exit; //corto el script
    }
    echo 'Archivo eliminado <br>';
    $destino = $nombre_archivo;
    $origen = 'http://la_web_externa.es/descargar_archivo.do?tipoBusqueda=0';
    if(!file_put_contents($destino, file_get_contents($origen))){
        mail($emailAdmin, 'CRON actualización de archivo: '.$nombre_archivo, 'Fallo la creación del archivo');
        exit; //corto el script
    }
    echo 'Archivo reemplazado';


    ¿Cómo calcular el número/permisos a utilizar en chmod()?
    También te adjunto una lista de los permisos posibles para chmod(). Tal vez ya sepas como calcular los permismo, pero no esta de más recordar para quien no. El calculo es así: de la lista de permisos sumas los números correspondientes a los permisos que quieres aplicar y luego le agregas un cero delante, por ejemplo si queres que el dueño del archivo tenga permisos de lectura y ejecución, y el grupo y demás usuarios solo lectura sumas 400 + 200 + 40 + 4 = 644 y luego le agregas el cero delante, entonces el número a usar en chmod es 0644
    //Lista de persmisos
    /*
    Valor - Permiso
    400 - Owner Read
    200 - Owner Write
    100 - Owner Execute
    40 - Group Read
    20 - Group Write
    10 - Group Execute
    4 - Global Read
    2 - Global Write
    1 - Global Execute
     */


    Saludos y buen código!
      Votos: 4 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com