脚本无法通过Crontab工作

时间:2014-05-06 16:07:33

标签: php cron sh crontab

我有以下php和.sh文件访问FTP服务器,下载jpg文件,将它们放到另一台服务器然后从临时文件夹中删除它们。当我通过浏览器运行脚本时,这很有用,但我正在尝试将其添加为cronjob。

我已将我的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('myemail@mydomain.com','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

1 个答案:

答案 0 :(得分:2)

从CRON运行时,不直接调用PHP脚本,而是将PHP的可执行文件传递给它。 E.g:

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