[英]Crontab won't download file from FTP server using PHP
我已經編寫了一個PHP腳本來登錄到FTP服務器,下載抑制數據的csv文件,並將其與我們當前的抑制列表文件合並。
當我從命令行運行它時,它運行完美。 當我將其設置為每天在crontab中運行一次時,它總是說無法從FTP服務器下載文件,然后退出。 我給腳本編寫文件的目錄指定了777,所以我無法想象這將是一個權限問題。
其他人遇到過這個問題嗎? 有什么簡單的我想念的嗎? 下面是我的crontab行和腳本代碼,如果這有助於給出答案的話。 謝謝!
Crontab條目:
0 8 * * * php /var/www/scripts/ftp-unsubs.php >> /var/www/scripts/logs/ftp-unsubs.log
PHP腳本:
<?
// get latest suppression file and append to our global suppression file (loader.txt)
$yesterday = date("Y-m-d", strtotime("yesterday"));
$ftp_server = '--hidden--';
$ftp_user_name = '--hidden--';
$ftp_user_pass = '--hidden--';
$local_file = 'unsub_dls/unsubs.' . $yesterday . '.csv';
$remote_file = 'FJM378_unsubs.' . $yesterday . '.csv';
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, TRUE);
print "\n[" . date("r") . "]\n";
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!\n";
echo "Attempted to connect to $ftp_server for user $ftp_user_name\n";
exit;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name\n";
}
// try to download $remote_file and save to $local_file
if (ftp_get($conn_id, $local_file, $remote_file, FTP_BINARY)) {
echo "Successfully written to $local_file\n";
} else {
echo "Couldn't get file $remote_file\n";
}
// close the FTP stream
if (ftp_close($conn_id)) {
print "Closed the connection to $ftp_server\n";
}
// grab new unsubs and add timestamp
print "\nProcessing file $local_file\n";
if (file_exists($local_file)) {
$fh = fopen($local_file, 'r');
$i = 0;
$unsub = "";
while (!feof($fh)) {
$line = fgets($fh);
$line = preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "", $line);
if ($line != "" && $line != "email") {
$unsub .= $line . "," . date("Y-m-d H:i:s") . "\n";
$i++;
}
}
fclose($fh);
// add unsubs to global unsub file
$fsupp = fopen('loader.txt','a');
fwrite($fsupp, $unsub);
fclose($fsupp);
print "Added $i unsubs to loader.txt\n\n";
} else {
print "Error: file '$local_file' doesn't exist! Bailing.\n\n";
}
?>
嘗試將一個用戶名添加到該用戶名(此任務應在該用戶名下運行),如下所示:
0 8 * * * 根 php /var/www/scripts/ftp-unsubs.php >> /var/www/scripts/logs/ftp-unsubs.log
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.