经过几次不同的尝试,我创建了一个每分钟运行以下文件的cron任务 - 这个文件称为cron.php:
<?php
echo file_get_contents('http://website.com/search/all');
?>
搜索是我的控制器,一切都是我的功能。
像这样通过终端访问此文件时,该文件正常工作并预期:
php /srv/users/serverpilot/apps/websitename/public/cron.php
但是,一旦我在 crontab -e 中安排它,它就无法正常运行(如果有的话)并且没有显示任何错误。这是 crontab -e 的内容:
* * * * * php /srv/users/serverpilot/apps/brickmulesite/public/cron.php
当我查看我的cron日志(grep cron/var/log/syslog)时,这就是我看到的:
Jan 27 13:55:01 websitename CRON[22231]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 13:56:01 websitename CRON[22237]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 13:57:01 websitename CRON[22241]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 13:58:01 websitename CRON[22247]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 13:59:01 websitename CRON[22260]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 14:00:01 websitename CRON[22266]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 14:01:01 websitename CRON[22270]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 14:02:01 websitename CRON[22274]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 14:03:02 websitename CRON[22278]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 14:04:01 websitename CRON[22363]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 14:05:01 websitename CRON[22367]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 14:06:01 websitename CRON[22372]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 14:07:01 websitename CRON[22376]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
Jan 27 14:08:01 websitename CRON[22383]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php)
看起来 cron 正在运行,但没有运行文件中的代码。我错过了什么?
我知道我应该能够使用以下方法运行它,但这也没有用,所以我想简化问题:
php -f /srv/users/serverpilot/apps/websitename/public/index.php search all
[已解决]
你会注意到我正在使用ServerPilot作为我网站的一部分。他们的平台允许我选择我的网络应用程序应该运行哪个版本的php。无论如何。。。
在此网站上找到了修复程序:https://serverpilot.io/community/articles/how-to-use-the-php-cli.html
我需要做的是更改 cron 内部的 PHP 调用,使其读取:
* * * * * php5.6-sp /srv/users/serverpilot/apps/websitename/public/cron.php
请注意 php5.6-sp
我想这是非常特定于ServerPilot用户的。
使用完整的路径,例如
/usr/bin/php
只需将其与 curl 一起使用即可
卷曲"http://www.nameofdomain.com/controllername/functionname"
在命令文本框中