3

我正在使用 Laravel 工作人员来执行一些后台任务。当我使用 'php artisan queue:work' 调用工作人员时,它可以正常工作

但是当我在 CentOS 中将相同的命令添加到 supervisord 时,使用以下配置:

[程序:laravel-worker]

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

/var/www/html/laravel/工匠队列:工作

自动启动=真

自动重启=真

用户=根

numprocs=8

重定向标准错误=真

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

我收到以下错误:

PHP 致命错误:在第 169 行的 /var/www/html/laravel/app/External/library/RegistrationServi‌​ce.php 中找不到类“SoapClient”

[Symfony\Component\Debug\Exception\FatalErrorException] 类 'SoapClient' 未找到

作业未执行,抱怨未找到 SoapClient(尽管已安装)。SoapClient 类由我在外部加载的普通 PHP 类继承。

请注意,当从命令行执行时,我可以通过控制器或作业使用此类,而不会出现任何问题,只有在 supervisord 中它才会给我错误消息。更奇怪的是,它只发生在一个使用这个外部类的作业上,它不会发生在只使用 Laravel 的类(控制器、事件等)的作业上。

4

3 回答 3

0

我想我今天遇到了这个问题。

并解决这个问题

sudo supervisorctl reread
sudo supervisorctl upload
sudo service supervisord restart

幸运的是我摆脱了这个 Class Not Found Exception

于 2021-09-16T14:22:17.850 回答
0

SoapClientLaravel 5.2 中:

  1. 加入'SoapClient' => SoapClient::class,_Config/app.php

  2. 添加use SoapClient;你的控制器。

  3. soapClinet在你的函数中使用: new SoapClient('...');

于 2017-01-11T14:23:35.713 回答
0

我可以通过指定php二进制文件的确切路径来解决它我仍然不明白为什么它没有选择默认的

于 2017-01-11T16:25:48.693 回答