【问题标题】:Crontab failing to run on AWS ec2 Ubuntu InstanceCrontab 无法在 AWS ec2 Ubuntu 实例上运行
【发布时间】:2015-03-18 11:52:42
【问题描述】:

尝试设置一个 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 目录/文件权限(潮汐 & 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

有什么建议吗?

【问题讨论】:

  • CLI 上没有查询字符串之类的东西。

标签: php amazon-ec2 crontab


【解决方案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];
?>

【讨论】:

  • 我这里似乎有一些问题。我决定使用 $argv,但基本脚本无法通过 cron 运行。我一直在尝试运行以下测试脚本: $path = $_SERVER["DOCUMENT_ROOT"]; $file = "$path/cron-test.txt"; $data = date("l d M Y: H:i") 。 "\r\n"; if (($fp = fopen($file, "a")) !== false) { fwrite($fp, $data); fclose($fp);如果我通过网络浏览器运行,脚本会创建文本文件,但不是通过以下 cron 命令: * * * * * /usr/bin/php /var/www/html/cron-test.php 我错过了什么?
【解决方案2】:

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

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

我用/var/www/html替换了$_SERVER["DOCUMENT_ROOT"]

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2018-08-30
    • 2015-10-14
    • 2015-11-19
    • 2017-12-02
    • 2017-04-27
    • 2015-04-17
    相关资源
    最近更新 更多