2

我确信答案就在我面前,但这让我发疯。我已经搜索了高低的答案,但找不到它。本质上,我正在尝试通过cronjob我的服务器上的 a 运行脚本,但没有任何效果。但是,当我使用 PHP 命令行运行它时,它运行良好。

期望的效果是定期发送电子邮件。所以,当我运行这个:

php /var/www/html/index.php email_controller index

电子邮件发送,一切正常。我正在调用email_controller控制器和index方法。该index方法不是必需的,如果我也将其关闭,它也可以工作。

我的crontab样子是这样的:

18 15 * * * php /var/www/html/index.php email_controller index

在下午 3:18 运行脚本。这不起作用。 cron正在运行,我已经检查过了。

这里有什么想法吗?

4

4 回答 4

4

下午 3:18 是 15:18 另外,不要忘记设置 php 解释器的完整路径:

18 15 * * * /usr/bin/php -f /var/www/html/index.php email_controller index
于 2013-10-20T19:25:03.923 回答
1

您应该使用二进制文件的完整路径,它可能/usr/bin/php但用于whereis php获取正确的路径。

除此之外,我不明白为什么这不应该工作。如果手动运行它是否有效?

你是crontab -e用来添加任务的吗?用调试脚本做一些测试,让它每分钟运行一次,* * * * *这样你就可以调试它:

// debugcrontab.php
<?php

    file_put_contents('Ran at ' . date('Y-m-d H:i:s') . "\n", '/tmp/debug.txt', FILE_APPEND);

?>

如果它仍然失败尝试/bin/sh /usr/bin/php ...

我在我的服务器中使用了这个,它工作得很好:

0 3 * * * /usr/bin/php /var/www/update_reports.php > /dev/null 2>&1
于 2013-10-20T19:36:26.120 回答
1

我遇到了同样的问题,在使用正确的 PHP 路径后它对我有用。

利用:

/usr/local/bin/php /home/username/public_html/index.php 控制器名 方法名

于 2013-11-09T09:39:01.323 回答
0

验证 PHP 可执行文件的路径是否正确;对我来说是/usr/local/bin/php

尝试which php获取默认 php 的路径 - 或尝试/usr/bin/env php.

于 2020-04-27T15:12:52.967 回答