2015-08-10 1 views
0

У меня есть приложение, которое будет работать команду Artisan через контроллер:Laravel 5.1: Изменение PHP версии используется 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 версии является неправильным, что согласуется с предыдущими вопросами я имею был на моем рабочем сервере.

Кто-нибудь знает, как я могу изменить версию PHP, используемую Artisan Facade? Предпочтительно без изменения основного кода Laravel :)

Спасибо

ответ

2

При запуске команды через ремесленных :: вызова() вы не создаете отдельный процесс. Код команды выполняется с тем же процессом, который обрабатывает запрос и использует ту же версию PHP. Невозможно использовать другую версию PHP при вызове через Artisan фасад.

Чтобы использовать другую версию PHP, вам необходимо запустить команду в отдельном процессе. Вы можете использовать класс Symfony Process для этого - он поставляется вместе с Laravel, поэтому нет необходимости устанавливать что-либо.

Это должно работать для вас:

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

Я думаю, что будет исправить оригинальный вопрос, но я обнаружил, другие вопросы в коде - я думаю, мне нужно, чтобы попытаться получить мой сервер PHP обновлен до> = 5.5, или я буду придерживаться исправлений по всему месту. Спасибо, в любом случае :) – Ste77

Смежные вопросы