2017-01-11 3 views
3

Я использую Laravel для выполнения некоторых фоновых задач. Когда я призываю работник с помощью «PHP очереди ремесленника: работа», она работает без каких-либо проблемКласс не найден Вызов Laravel Script из Supervisord

Но когда я добавляю ту же команду, чтобы supervisord в CentOS, используя следующую congifuration:

[program:laravel-worker]

process_name=%(program_name)s_%(process_num)02d command=php

/var/www/html/laravel/artisan queue:work

autostart=true

autorestart=true

user=root

numprocs=8

redirect_stderr=true

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

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

PHP Fatal error: Class 'SoapClient' not found in /var/www/html/laravel/app/External/library/RegistrationServi‌​ce.php on line 169

[Symfony\Component\Debug\Exception\FatalErrorException] Class 'SoapClient' not found

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

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

+0

Может быть, стоит разделять ошибки, где указанные " жалуясь, что SoapClient не найден »или код, который его вызывает – haakym

+0

PHP Неустранимая ошибка: класс« SoapClient »не найден в /var/www/html/laravel/app/External/library/RegistrationService.php в строке 169 [ Symfony \ Component \ Debug \ Exception \ FatalErrorException] Класс «SoapClient» не найден – FiFo

+0

bette r, чтобы отредактировать ваш вопрос с ним – haakym

ответ

0

Для SoapClient в Laravel 5.2:

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

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

  3. soapClinet в вашей функции: new SoapClient('...');

+0

Ни один из вышеизложенных не сделал разницу тот же самый код уже работает на сервере Ubuntu, и он работает на целевом сервере CentOS, когда очередь php artisan: работа вызывается вручную с терминала. проблема связана с supervisord на CentOS – FiFo

+0

Привет @FiFo, я не работал с centOS. Извините. – mySun

0

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

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