【问题标题】:How to use class SoapClient in Laravel's Job?如何在 Laravel 的 Job 中使用 SoapClient 类?
【发布时间】:2019-01-09 16:07:46
【问题描述】:

我有一个使用 Laravel 框架 (5.7) 的 WebApp。

在我的 Macbook 上,我安装了:

  1. PHP 7.2.1
  2. 作曲家 1.7.2
  3. XAMPP 4.4.1

当我跑步时:$ php artisan queue:work

一切都很好!我的工作完美无缺(它调用 ASP.NET 服务上的 API - asmx)

但是!!!

当我在 Linux 服务器上部署我的 WebApp...时,它不起作用!!!

failed_jobs 表中,我看到这条消息:Class 'SoapClient' not found。 当我通过 WebBrowser 调用时(例如:http://my_server_linux_ip/dosomething,它可以工作!)

我真的在php.ini中开启了soap分机

我的 Linux 服务器已安装:

  1. PHP 7.2.13
  2. 作曲家 1.7.2
  3. Apache2

我的composer.json

"require": {
        "php": "^7.1.3",
        ....
}

PHP 肥皂:

$ apt-cache search php | grep -i soap
libnusoap-php - SOAP toolkit for PHP
php7.0-soap - SOAP module for PHP
python-pysimplesoap - simple and lightweight SOAP Library (Python 2)
python3-pysimplesoap - simple and lightweight SOAP Library (Python 3)
php-soap - SOAP module for PHP [default]
php5.6-soap - SOAP module for PHP
php5.6-soap-dbgsym - debug symbols for php5.6-soap
php7.0-soap-dbgsym - debug symbols for php7.0-soap
php7.1-soap - SOAP module for PHP
php7.1-soap-dbgsym - debug symbols for php7.1-soap
php7.2-soap - SOAP module for PHP
php7.2-soap-dbgsym - debug symbols for php7.2-soap
php7.3-soap - SOAP module for PHP
php7.3-soap-dbgsym - debug symbols for php7.3-soap

我不知道为什么!

帮帮我!谢谢!

【问题讨论】:

  • 你很可能需要安装 php7-soap。
  • 我真的安装了php7.2soap
  • 哦,php-cli。 php --ini /etc/php/7.2/cli/conf.d/20-soap.ini 打开它 (20-soap.ini) 并删除在线 ;extension=soap.so 上的 ;。重启 Apache,成功了!

标签: php laravel soap-client jobs


【解决方案1】:

如果您在服务器上运行 php -m 会发生什么?你在那儿看到SoapClient enabled了吗?

如果是,则尝试在您的服务器上运行composer dump-autoload -o(在确保您的供应商文件夹包含正确的包之后)。

【讨论】:

  • 我知道原因!当我通过浏览器运行时,Php 映射到 APACHE 配置 (etc/php/7.2/apache2/php.ini)。但是当 Job 运行时,它不是通过 APACHE,而是通过 CLI 运行的。所以 PHP 应该映射到/etc/php/7.2/cli/php.ini。所以我打开那个文件并添加extension=soap.so,它工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 2021-10-25
  • 2021-03-05
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
  • 2017-11-10
相关资源
最近更新 更多