如何在没有CPanel的情况下正确执行CRON作业?

时间:2015-09-18 21:21:43

标签: php laravel cron ubuntu-14.04

我尝试使用多种变体,但由于我搬到了另一个托管位置,因此无法正常运行CRON作业。

在我刚刚在下面的图片中调用如此的http链接之前:

enter image description here

文件名/cron/synchronize.php包含以下代码:

<?php shell_exec('php /var/www/domain.com/artisan domaincom:cron argument1 argument2 --option1');?>

我找不到真正的crontab文件存储在哪里,所以我可以复制真正的代码......

现在,当我进入新托管时,通过终端我移动到/var/spool/cron,然后输入命令行crontab -e,我放置了我的代码:

SHELL=/bin/bash
HOME=/
0 8,12,14,16,19,23 * * * php /var/www/domain.com/cron/synchronize.php

那个代码不起作用,任何可以告诉我我做错了什么的人?

2 个答案:

答案 0 :(得分:1)

您应该检查您的用户是否有权执行cron作业。当您登录VPS时,您需要使用特定用户登录(除非您使用root访问权限)。

因此,您可以查看/etc/cron.allow,看看您的用户是否列在那里。如果不是,您可以在一行中添加您的用户名。还要检查/etc/cron.deny以查看您的用户名是否已列出,或者是否列出了所有用户名。如果列出了ALL,则表示您肯定需要将用户名添加到/etc/cron.allow

答案 1 :(得分:1)

您当前的cron设置为运行PHP,然后调用另一个PHP脚本。您可以通过在crontab中调用该命令来大大简化:

0 8,12,14,16,19,23 * * * php /var/www/domain.com/artisan domaincom:cron argument1 argument2 --option1

正如其他人在评论中所述,将输出发送到文件进行故障排除可能会有所帮助。这可以通过在命令末尾添加>> ~/output.txt来将输出存储在主目录中的output.txt文件中来实现(当然,您可以选择任何其他路径)。