Ошибка посланника Laravel 5.6 при вызове с контроллера
Я пытаюсь использовать посланника из laravel для вызова некоторых скриптов на моем сервере. Прямо сейчас я делаю это с виртуальной машиной, установленной на моем Mac.
Я пытаюсь запустить сценарий посланника из контроллера следующим образом:
function __construct()
{
$command = "/Users/test_user/.composer/vendor/bin/envoy run test --filename=new_folder"
$process = new Process($command);
$process->start();
foreach ($process as $type => $data) {
if ($process::OUT === $type) {
echo "\nRead from stdout: ".$data;
} else { // $process::ERR === $type
echo "\nRead from stderr: ".$data;
}
}
exit();
}
Теперь, когда я запускаю эту программу, я получаю следующий ответ:
Read from stdout: Valet requires Homebrew to be installed on your Mac.
Если я открываю свой терминал и запускаю: какой напиток
which brew
/usr/local/bin/brew
и мой $PATH
/Users/test_user/Android/platform-tools:/Users/test_user/Android/tools:~/.composer/vendor/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin alias numFiles='echo 14'
Я не совсем уверен, почему это похоже на сбой?
Валет был установлен с composer global require laravel/valet
команда, и не был установлен локально для проекта.
Есть ли способ исправить это?
1 ответ
Вы должны установить посланника локально в вашем проекте:
composer require laravel/envoy
и выполнить его от продавца /bin/envoy.
Также не забудьте установить рабочий каталог для процесса на базовый путь, предполагая, что ваш Envoy.blade.php
находится в корневом каталоге вашего приложения.
function __construct()
{
$command = base_path('vendor/bin') . "/envoy run test --filename=new_folder"
$process = new Process($command);
$process->setWorkingDirectory(base_path());
$process->start();
foreach ($process as $type => $data) {
if ($process::OUT === $type) {
echo "\nRead from stdout: ".$data;
} else { // $process::ERR === $type
echo "\nRead from stderr: ".$data;
}
}
exit();
}