【发布时间】:2018-02-07 15:10:04
【问题描述】:
我正在做一个需要动态设置 cron 作业的项目。为了您的承认,我正在使用 linux e2-user amazon 实例。如果我从终端运行,我已经添加了 cron 作业并且它运行良好,但当我从 Web 浏览器或邮递员运行 url 时无法正常工作。
这是我在 demo2.php 文件中的动态 cron 作业代码。
$output = shell_exec('crontab -l');
file_put_contents('crontab.txt', $output.'20 14 * * * php /var/www/html/jackpot/demo.php'.PHP_EOL);
exec('crontab crontab.txt');
当我在终端 php demo.php 中运行时,它工作正常并运行两个 cron 作业。如果我在像 http://ec2-52-23-188-162.compute-1.amazonaws.com/jackpot/demo2.php 这样的浏览器中运行相同的文件,并且在运行此文件后,我会转到我的终端并输入 crontab -l 它什么也没有显示。我不知道这出了什么问题。所有 linux 命令也都可以正常工作。
请告诉我任何完美的解决方案。
谢谢
【问题讨论】:
-
您确定您使用的用户 ID 与 Web 服务器使用的用户 ID 相同吗?
-
尽可能使用绝对路径以避免环境差异。
-
您好,您的 crontab 在受限环境中运行。这意味着
PATH非常有限,可能无法找到php。在您的 crontab 文件中使用php的完整路径。 (也可以看看 ServerFaults Why is my crontab not working, and how can I troubleshoot it?)
标签: php linux amazon-ec2 cron