cronjob não está fazendo upload para FTP

0

Eu tenho um script php que deve pegar um arquivo de um servidor web e enviá-lo para outro, quando eu executo o script através de um navegador, ele funciona bem. quando eu uso este cronjob, ele não faz upload.

51 14 * * * /usr/bin/php /kunden/homepages/25/d515048961/htdocs/FTP_Orders.php

há algo que eu estou perdendo? os tempos são arbitrários, estou apenas testando.

o script PHP é:

<?php

// FTP access parameters
$host = 'paperlinx.co.uk';
$usr = '[email protected]';
$pwd = '######';

// file to move:
$local_file = './db_export_orders_2014-10-27.csv';
$ftp_path = '/exported/db_exported_orders_2014-10-27.csv';

// connect to FTP server (port 21)
$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");

// send access parameters
ftp_login($conn_id, $usr, $pwd) or die("Cannot login");

// turn on passive mode transfers (some servers need this)
ftp_pasv ($conn_id, true);

// perform file upload
$upload = ftp_put($conn_id, $ftp_path, $local_file, FTP_ASCII);

// check upload status:
print (!$upload) ? 'Cannot upload' : 'Upload complete';
print "\n"; 

/*
** Chmod the file (just as example)
*/

// If you are using PHP4 then you need to use this code:
// (because the "ftp_chmod" command is just available in PHP5+)
if (!function_exists('ftp_chmod')) { 
//print "in not function exists";
   function ftp_chmod($ftp_stream, $mode, $filename){
        return ftp_site($ftp_stream, sprintf('CHMOD %o %s', $mode, $filename)) or die ("i'm stuck here");
   }
} 

/* else

// try to chmod the new file to 666 (writeable)
 if (ftp_chmod($conn_id, 0666, $ftp_path) !== false) 
{    
    print $ftp_path . "chmoded successfully to 666\n";
} 

else 
{

    print "could not chmod $file\n";
}
*/



// close the FTP stream
ftp_close($conn_id);

?>

Estou realmente preso a isso, então qualquer ajuda seria muito apreciada.

    
por Jamie Atkinson 03.11.2014 / 10:49

1 resposta

0

O problema é que, quando você executa o script a partir da tarefa cron, o diretório de trabalho atual não é o mesmo de quando você o executa a partir do navegador, portanto, os caminhos relativos devem ser evitados.

Substitua seu $local_file pelo caminho completo e ele deve funcionar.

    
por 03.11.2014 / 11:29

Tags