Php Laravel计划:运行命令不起作用
我正在实时服务器(Linux)上的laravel中设置后台时间表。我正在使用bitnami。但是当我使用comand时,Php Laravel计划:运行命令不起作用,php,laravel-5,bitnami,Php,Laravel 5,Bitnami,我正在实时服务器(Linux)上的laravel中设置后台时间表。我正在使用bitnami。但是当我使用comand时,schedule:run不起作用,如下所示: * * * * * /opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1 * * * * * php artisan schedule:run 1>
schedule:run
不起作用,如下所示:
* * * * * /opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1
* * * * * php artisan schedule:run 1>> /dev/null 2>&1 ###
$schedule->command('payment:check')->everyMinute();
我也试过这样:
* * * * * /opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1
* * * * * php artisan schedule:run 1>> /dev/null 2>&1 ###
$schedule->command('payment:check')->everyMinute();
没有发生错误,但计划不起作用
当我这样尝试时:
php artisan schedule:run 1>> /dev/null 2>&1
或者
/opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1
如果没有星号(*),则它可以工作,但只处理了一个命令,我在内核中的时间表中设置为每分钟一个命令,如下所示:
* * * * * /opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1
* * * * * php artisan schedule:run 1>> /dev/null 2>&1 ###
$schedule->command('payment:check')->everyMinute();
但当我运行schedule:run
命令时,它只运行一次,之后什么也不做。我每小时、每天等调用的其他命令根本不起作用
有人能告诉我问题出在哪里吗?使用Bitnami灯组,可在 以下是我在Laravel上成功设置日程的步骤:
- 取消对Apache congirutation文件
/opt/bitnami/apache2/conf/bitnami/bitnami apps prefix.conf下一行的注释:
#Include "/opt/bitnami/lampstack-5.6.26-3/frameworks/laravel/conf/httpd-prefix.conf"
- 在文件
上编辑方法计划:/opt/bitnami/frameworks/laravel/app/Console/Kernel.php
protected function schedule(Schedule $schedule) { $schedule->exec('echo "Hello World"') ->everyMinute() ->appendOutputTo('/tmp/laravel.log'); }
- 重启Apache:
sudo/opt/bitnami/ctlscript.sh重启Apache
- 运行:
/opt/bitnami/php/bin/php/opt/bitnami/frameworks/laravel/artisan计划:运行>>/dev/null 2>&1
- Laravel样本项目可从以下网址获得:
- 每分钟都会在/tmp/laravel.log上添加一行“Hello world!”
- Bitnami Laravel文件:
- Laravel官方文件(日程安排):
php artisan schedule:run
命令只运行一次调度器。为了使其工作,您需要将此命令添加到位于/etc目录的cron配置文件(crontab)中。请按照以下步骤操作:
步骤1:
将cron条目添加到crontab文件[使用nano打开文件/etc/crontab
]
* * * * * root php path/to/artisan schedule:run
注:
-****的意思是每分钟运行一次命令
-root是用户名,您应该指定适当的用户名
-请在laravel项目中指定artisan命令的完整路径
步骤2:
重新启动服务
> sudo service cron reload
> sudo service cron stop
> sudo service cron start
要检查cron的状态,请运行sudo服务cron status
步骤3:
确保您已经在App/Console/Kernel中的schedule函数中编写了代码。以下是我在那里写的:
protected function schedule(Schedule $schedule)
{
$schedule->call(function(){
Mail::send([],[],
function ($m){
$m->to(['test@example.com'],'Notify')
->subject('Renewal Notification')
->setBody('You have upcoming renewal.');
});
})->everyTenMinutes();
}
Laravel提供了许多函数来安排您的调用或命令。我使用了
everyTenMinutes()
函数。然而,Laravel在内部处理这些计划,我们应该只确保在cron配置文件中使用单个条目(在步骤1中提到)频繁调用schedule:run
命令 抱歉,我不太清楚,因为我的laravel(在bitnami lampstack之外使用vhost)也有问题,我是否需要通过取消对apache配置文件的注释来遵循您的答案?