我确信答案就在我面前,但这让我发疯。我已经搜索了高低的答案,但找不到它。基本上我试图通过我的服务器上的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
正在运行,我已经检查过了。
这里有什么想法吗?
答案 0 :(得分:3)
下午3:18是15:18另外,不要忘记设置php解释器的完整路径:
18 15 * * * /usr/bin/php -f /var/www/html/index.php email_controller index
答案 1 :(得分: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
答案 2 :(得分:1)
我遇到了同样的问题,在使用正确的PHP路径后,它对我有用。
使用:
/ usr / local / bin / php /home/username/public_html/index.php controllername methodname
答案 3 :(得分:0)
验证您的PHP可执行文件的路径是否正确;对我来说是/usr/local/bin/php
。
尝试which php
获取默认php的路径-或尝试/usr/bin/env php
。