首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以更改Laravel任务调度程序使用的PHP路径

是否可以更改Laravel任务调度程序使用的PHP路径
EN

Stack Overflow用户
提问于 2017-08-30 13:22:07
回答 2查看 804关注 0票数 1

我有一个Laravel5.4应用程序,这是在共享主机和cron的工作不起作用。我在kernel.php中设置了如下命令:

代码语言:javascript
运行
复制
$schedule->command('eoddsmaker:get_events')
         ->withoutOverlapping()
         ->appendOutputTo(storage_path('logs').'/cron-get_events.log')
         ->everyMinute();

如果我只是从命令行运行/usr/bin/php-5.6 artisan eoddsmaker:get_events,它就运行得很好。当它被cron作业调用时,尽管它没有运行。这是我的cron定义:

代码语言:javascript
运行
复制
* * * * * /usr/bin/php-5.6 /var/sites/c/cyo.mydomain.com/artisan schedule:run >> /var/sites/c/cyo.mydomain.com/cron.log 2>&1

从服务器上的cron日志可以看出,此任务每分钟运行一次,每次运行该任务时,都会将以下输出添加到cron.log文件中:

代码语言:javascript
运行
复制
Running scheduled command: '/usr/bin/php' 'artisan' eoddsmaker:get_events > '/dev/null' 2>&1
X-Powered-By: PHP/5.6.8
Content-type: text/html; charset=UTF-8

因此,如果我查看cron_vents.log文件(我已经将任务配置为在每次运行时将输出发送到下面的输出),那么要深入了解一下:

代码语言:javascript
运行
复制
Warning: Unexpected character in input:  '\' (ASCII=92) state=1 in /var/sites/c/cyo.mydomain.com/artisan on line 31

Parse error: syntax error, unexpected T_STRING in /var/sites/c/cyo.mydomain.com/artisan on line 31

因为我是共享主机,默认的PHP版本是5.2,所以我必须在htaccess文件中添加一条规则,才能让它使用PHP5.6。如果我忘记添加规则,我得到的错误与cron_vents.log中的错误相同,因此我认为命令不能工作的原因是,当调度程序运行时,它使用/usr/bin/php作为/usr/bin/php-5.6的路径来调用命令。

是否有方法将任务调度程序配置为使用不同的PHP路径?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-30 13:39:41

通过将调度程序任务定义更改为:

代码语言:javascript
运行
复制
$schedule->command('eoddsmaker:get_events')
     ->withoutOverlapping()
     ->appendOutputTo(storage_path('logs').'/cron-get_events.log')
     ->everyMinute();

至:

代码语言:javascript
运行
复制
$schedule->exec('/usr/bin/php-5.6 /var/sites/c/cyo.mydomain.com/artisan eoddsmaker:get_events >> /var/sites/c/cyo.mydomain.com/cron.log 2>&1')
     ->withoutOverlapping()
     ->appendOutputTo(storage_path('logs').'/cron-get_events.log')
     ->everyMinute();

我仍然有兴趣知道是否有更好的方法来实现这一点,这样我就可以在Laravel中声明PHP的路径了。

票数 1
EN

Stack Overflow用户

发布于 2021-11-15 10:58:10

我今天也遇到了这个问题,并且能够通过以下简单的方法来解决它

代码语言:javascript
运行
复制
PHP_BINARY=/usr/bin/php

在.env文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45961655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档