2014-05-06 141 views
0

我有下面的php和.sh文件,它訪問FTP服務器,下載jpg文件,將它們放到另一個服務器上,然後從臨時文件夾中刪除它們。當我通過瀏覽器運行腳本時,這很好用,但我試圖將它作爲cronjob添加。腳本不能通過Crontab工作

我已經把我的crontab來:

50 16 * * 1-5 /location/of/script/transfer.php 

我可以從cron的日誌,它已請求的文件,但是這就是儘可能的東西去看看,沒有圖像已被轉移,我在幹嘛有些明顯的錯誤?

transfer.php

<?php 
echo shell_exec('sh /location/of/script/ftp_jpg_fetch.sh'); 
$files = glob('/location/of/script/*.jpg'); 
foreach($files as $file){ 
    if(is_file($file)) 
    unlink($file); 
} 
$files2 = glob('/location/of/script/*.JPG'); 
foreach($files2 as $file2){ 
    if(is_file($file2)) 
    unlink($file2); 
} 
mail('[email protected]','Images transferred','All images from the FTP have been transferred to the other server.'); 
?> 

ftp_jpg_fetch.sh

#!/bin/sh 
USER='username1' 
PASSWD='password1' 
ftp -n -i ftp.host1.com <<SCRIPT 
user $USER $PASSWD 
binary 
cd vendora 
mget *.jpg 
mget *.JPG 
cd/
cd vendorb 
mget *.jpg 
mget *.JPG 
quit 
SCRIPT 

USER2='username2' 
PASSWD2='password2' 
ftp -n -i ftp.host2.com <<SCRIPT2 
user $USER2 $PASSWD2 
binary 
cd htdocs/test 
bin 
mput *.jpg 
mput *.JPG 
quit 
SCRIPT2 
+0

您可以檢查http://stackoverflow.com/tags/crontab/info的「調試」部分中的典型錯誤。完整路徑,環境... – fedorqui

+0

php本身不可執行; Web服務器將php-intrepreter應用於它。也許試試wget /web/path/to/your/script/transfer.php – fast

+0

@fast你也可以調用php可執行文件並將它傳遞給php腳本的路徑,它將解釋腳本。 –

回答

2

當從cron運行,你不直接調用PHP腳本,但PHP的可執行文件傳遞給腳本它。例如:

50 16 * * 1-5 /usr/bin/php /location/of/script/transfer.php