Класс не найден Вызов сценария Laravel из супервизора

Я использую рабочие Laravel для выполнения некоторых фоновых задач. Когда я вызываю воркера с помощью php artisan queue: work, он работает без проблем.

Но когда я добавляю ту же команду в супервизор в CentOS, используя следующую конфигурацию:

[программа: laravel-worker]

имя_процесса =% (имя_программы) s _% (номер_процесса) 02d команда = php

/ var / www / html / laravel / artisan queue: работа

autostart = true

autorestart = true

пользователь = корень

numprocs = 8

redirect_stderr = правда

stdout_logfile = / var / www / html / laravel / worker.log

Я получаю следующую ошибку:

Неустранимая ошибка PHP: класс SoapClient не найден в / var / www / html / laravel / app / External / library / RegistrationServi ce.php в строке 169

[Symfony \ Component \ Debug \ Exception \ FatalErrorException] Класс SoapClient не найден

Задания не выполняются с жалобой на то, что SoapClient не найден (хотя он установлен). Класс SoapClient наследуется простым классом PHP, который я загружаю извне.

Обратите внимание, что я могу использовать этот класс через контроллер или задания при выполнении из командной строки без каких-либо проблем, только в супервизоре он выдает мне сообщение об ошибке. Что еще более странно, это происходит только с одним заданием, которое использует этот внешний класс, этого не происходит с заданиями, которые используют только классы Laravel (контроллеры, события и т. Д.).


person FiFo    schedule 11.01.2017    source источник
comment
Возможно, стоит поделиться ошибками, в которых вы указали, что SoapClient не найден, или код, который его вызывает.   -  person haakym    schedule 11.01.2017
comment
Неустранимая ошибка PHP: класс SoapClient не найден в /var/www/html/laravel/app/External/library/RegistrationService.php в строке 169 [Symfony \ Component \ Debug \ Exception \ FatalErrorException] Класс SoapClient не найден   -  person FiFo    schedule 11.01.2017
comment
лучше отредактировать свой вопрос с его помощью   -  person haakym    schedule 11.01.2017


Ответы (2)


Для SoapClient в Laravel 5.2:

  1. добавить 'SoapClient' => SoapClient::class, в Config/app.php

  2. добавьте use SoapClient; в свой контроллер.

  3. используйте soapClinet в своей функции: new SoapClient('...');

person mySun    schedule 11.01.2017
comment
ничто из вышеперечисленного не имело значения, точно такой же код уже работает на сервере Ubuntu, и он работает на целевом сервере CentOS, когда очередь php artisan: работа вызывается вручную с терминала. проблема связана с супервизором на CentOS - person FiFo; 11.01.2017

Я мог бы решить эту проблему, указав точный путь к двоичному файлу php, я до сих пор не понимаю, почему он не выбрал значение по умолчанию

person FiFo    schedule 11.01.2017