我有一个应用程序将通过控制器运行Artisan命令:
Artisan::call('myCommand');
问题是我的生产服务器没有最快的终端PHP版本,所以他们需要修复我运行的作曲家和工匠命令(我现在使用/ usr / bin / php55)。
现在,当我尝试通过我的控制器调用Artisan命令时,我收到此错误:
Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in on line 54
此错误是由于PHP版本错误,这与我之前在生产服务器上遇到的问题一致。
有谁知道如何更改Artisan Facade使用的PHP版本?最好不要更改任何核心Laravel代码:)
由于
答案 0 :(得分:2)
当您通过 Artisan :: call()运行命令时,您不会创建单独的进程。命令代码使用处理请求的相同进程执行,并使用相同的PHP版本。通过 Artisan Facade调用它时,无法使用其他PHP版本。
要使用不同的PHP版本,您需要在单独的进程中运行该命令。您可以使用Symfony的流程类 - 它与Laravel捆绑在一起,因此无需安装任何内容。
这应该适合你:
$process = new Process('/usr/bin/php55 artisan command:name');
$process->run();