2010-02-22 15 views
5

Tengo un archivo wp plugin en el servidor B que su propósito es recuperar un archivo zip desde un servidor A. remotade servidor en servidor> Recuperar y extraer un archivo zip remoto para directorio de servidor local

vez que el servidor B recibe archivo zip, debe extraer los contenidos y copiar los archivos en una carpeta específica en el servidor B sobrescribiendo los archivos existentes.

Tengo un código a continuación que he tomado prestado de un archivo que utiliza y cargador para hacer lo mismo y solo me gustaría rehacerlo para el procedimiento automatizado de servidor a servidor descrito anteriormente. Pero recibo un error fatal al intentar activar este complemento.

function remote_init() 
{ 
    openZip('http://myserver.com/upgrade.zip'); 
    $target = ABSPATH.'wp-content/themes/mytheme/'; 
} 


function openZip($file_to_open, $debug = false) { 
    global $target; 
    $file = realpath('/tmp/'.md5($file_to_open).'.zip'); 

// $ archivo siempre está vacío. no se puede usar realpath en este caso. ¿Qué hacer?

$client = curl_init($file_to_open); 
    curl_setopt(CURLOPT_RETURNTRANSFER, 1); 

    $fileData = curl_exec($client); 

    file_put_contents($file, $fileData); 

    $zip = new ZipArchive(); 
    $x = $zip->open($file); 
    if($x === true) { 
     $zip->extractTo($target); 
     $zip->close(); 

     unlink($file); 
    } else { 
     if($debug !== true) { 
      unlink($file); 
     } 
     die("There was a problem. Please try again!"); 
    } 
} 


add_action('init','remote_init'); 

Respuesta

1

lo hice una comprobación rápida en el manual, y se produjo un ligero error en la línea 5.

$target = ABSPATH .'wp-content/themes/mytheme/'; 
function openZip($file_to_open, $debug = false) { 
    global $target; 
    $file = ABSPATH . '/tmp/'.md5($file_to_open).'.zip'; 
    $client = curl_init($file_to_open); 
    curl_setopt($client, CURLOPT_RETURNTRANSFER, 1); //fixed this line 

    $fileData = curl_exec($client); 

    file_put_contents($file, $fileData); 

    $zip = new ZipArchive(); 
    $x = $zip->open($file); 
    if($x === true) { 
     $zip->extractTo($target); 
     $zip->close(); 

     unlink($file); 
    } else { 
     if($debug !== true) { 
      unlink($file); 
     } 
     die("There was a problem. Please try again!"); 
    } 
} 
+0

Cómo llegar. Un error menos Ahora tenemos: Advertencia: file_put_contents() [function.file-put-contents]: Filename no puede estar vacío. Además, ¿dónde configuro el valor de $ target? En la función remote_init()? $ target = ABSPATH.'wp-content/themes/mytheme/'; –

+0

Cambié el código anterior. Pruébalo otra vez. ABSPATH está definido, ¿verdad? – Jonah

+0

Jonah, realmente aprecio que te hayas quedado con esto. ABSPATH está definido, sin embargo, parece estar equivocado ... echo ($ target) returns: /home/myaccount/public_html/mysiteaddress//tmp/47393ca1964f2997cdee4b500721aca8.zip –

0
function openZip($file_to_open, $debug = false) { 
    global $target; 
    $file = realpath('/tmp/'.md5($file_to_open).'.zip'); 
    $client = curl_init($file_to_open); 
    curl_setopt(CURLOPT_RETURNTRANSFER, 1); 

    $fileData = curl_exec($client); 

    file_put_contents($file, $fileData); 

    $zip = new ZipArchive(); 
    $x = $zip->open($file); 
    if($x === true) { 
     $zip->extractTo($target); 
     $zip->close(); 

     unlink($file); 
    } else { 
     if($debug !== true) { 
      unlink($file); 
     } 
     die("There was a problem. Please try again!"); 
    } 
} 
+0

@prodigitalson> Gracias por la respuesta. Intento integrarlo en la solución general, pero sigo teniendo un error fatal. He editado la pregunta original con mi código después de tu respuesta. ¿Puedes echar un vistazo a los bits de remote_init() y decirme cuál crees que podría ser el problema? –

+0

@Scot B> prodigitalson puso una llamada cURL en la función 'openZIP()'. Creo que se supone que debes usar 'openZIP()' con el archivo remove (myserver.com/upgrade.zip) como el argumento '$ file_to_open'. – Jonah

+0

Gracias por la ayuda de Jonás. Todavía recibo un mensaje de error: Advertencia: recuento incorrecto de parámetros para curl_setopt() He editado el código en la pregunta original para reflejar su sugerencia. ¿Algunas ideas? –

Cuestiones relacionadas