我相信答案就在我面前,但这让我发疯了。 我上下搜索了答案,但找不到它。 本质上,我正在尝试通过服务器上的cronjob
运行脚本,但没有任何效果。 但是,当我使用 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
正在运行,我已经检查过了。
这里有什么想法吗?
3:18PM 是 15:18 另外,不要忘记将完整路径设置为 php 解释器:
18 15 * * * /usr/bin/php -f /var/www/html/index.php email_controller index
您应该使用二进制文件的完整路径,它可能/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
我遇到了同样的问题,在使用正确的 PHP 路径后,它对我有用。
用:
/usr/local/bin/php/home/username/public_html/index.php controllername methodname
验证 PHP 可执行文件的路径是否正确;对我来说,这是/usr/local/bin/php
。
尝试which php
以获取默认 php 的路径 - 或尝试/usr/bin/env php
。