Laravel 5.1:更改 Artisan Facade 使用的 PHP 版本

Laravel 5.1: Changing PHP version used by Artisan Facade

我有一个应用程序可以通过控制器 运行 Artisan 命令:

Artisan::call('myCommand');

问题是我的生产服务器的终端 PHP 版本没有跟上速度,所以他们需要为我的 运行 composer 和 artisan 命令安装一个修复程序(我现在使用 /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 代码 :)

谢谢

当您通过 Artisan::call() 运行 命令时,您并没有创建单独的进程。命令代码使用处理请求的相同进程执行,并使用相同的 PHP 版本。通过 Artisan facade.

调用它时无法使用另一个 PHP 版本。

为了使用不同的 PHP 版本,您需要 运行 在单独的进程中执行命令。您可以为此使用 Symfony 的 Process class - 它与 Laravel 捆绑在一起,因此无需安装任何东西。

这应该适合你:

$process = new Process('/usr/bin/php55 artisan command:name');
$process->run();