Я написал задание посланника, которое я запускал из терминала. Теперь я сделал вид в своем приложении, чтобы запустить его, нажав кнопку. Проблема в том, что раньше envoy запускался моим пользователем, но теперь он запускается с пользователем nginx, на котором Envoy не установлен из Composer, и я получаю эту ошибку:
sh: 1: /home/vagrant/.config/composer/vendor/bin/envoy: not found
Как я могу решить это?
Если вы бежите composer require laravel/envoy
без использования глобального тега вы найдете посланника, установленного в папке поставщика, где веб-сервер может получить к нему доступ.
Для запуска задачи используйте путь к посланнику в папке поставщика. Например,
$command = base_path().'/vendor/bin/envoy run mytask';
Вы можете запустить это через процесс, что-то вроде $process = new Process($command);
Процесс будет запускаться от имени любого пользователя, которого использует веб-сервер, в вашем случае nginx.
Других решений пока нет …