cronjob 未上传到 FTP

cronjob 未上传到 FTP

我有一个 php 脚本,它应该从一个 Web 服务器获取文件并将其上传到另一个 Web 服务器,当我通过浏览器运行该脚本时,它运行正常。但当我使用这个 cronjob 时,它却无法上传。

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

我是不是漏掉了什么?时间是任意的,我只是在测试一下。

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);

?>

我真的被这个问题困扰了,所以任何帮助我都会非常感激。

答案1

问题是,当您从 cron 作业运行脚本时,当前工作目录与从浏览器运行脚本时的目录不同,因此应避免使用相对路径。

用完整路径替换你的$local_file,它应该可以工作。

相关内容