Crontab无法在AWS ec2 Ubuntu实例上运行

时间:2015-01-20 09:49:53

标签: php amazon-ec2 crontab

尝试设置crontab以在我的AWS ec2 ubuntu实例上运行php脚本:

* * * * * /usr/bin/php /var/www/html/tides/get_tides.php?id=PASSWORD

无法让它执行。

当我在网络浏览器中运行时,脚本会执行:

http://URL_NAME/tides/get_tides.php?id=PASSWORD

当我在命令行上运行'which php'时,它返回/usr/bin/php 目录/文件权限(tides& get_tides.php):755

如果我在命令行上运行sudo /usr/bin/php /var/www/html/tides/get_tides.php?id=PASSWORD,我得到:无法打开输入文件:

/var/www/html/tides/get_tides.php?id=PASSWORD

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

没有直接用?id=PASSWORD运行php脚本的方法,你可以调整cronjob来运行

* * * * * /usr/bin/curl -o temp.txt http://URL_NAME/tides/get_tides.php?id=PASSWORD

* * * * * /usr/bin/wget -q -O temp.txt http://URL_NAME/tides/get_tides.php?id=PASSWORD

由于您没有在get_tides.php中显示内容,因此您可以将命令行参数传递给PHP脚本

php /var/www/html/tides/get_tides.php PASSWORD

并将php更新为:

<?php
// $argv[0] is '/var/www/html/tides/get_tides.php'
$id = $argv[1];
?>

答案 1 :(得分:1)

问题是由于我的cron脚本中没有使用绝对路径引起的:

<?php
$path = $_SERVER["DOCUMENT_ROOT"];
$file = "$path/cron-test.txt";

我将$_SERVER["DOCUMENT_ROOT"]替换为/var/www/html

crantab命令是:* * * * * /usr/bin/php /var/www/html/cron-test.php