致命错误:找不到类“ SoapClient”


202

我正在尝试一个简单的Web服务示例,即使extension=php_soap.dllphp.ini文件中未添加注释,我也会收到此错误:

致命错误:在第2行的C:\ Program Files(x86)\ EasyPHP-5.3.9 \ www \ server.php中找不到类'SoapClient'


3
确定要编辑Apache / bin / php.ini并在此之后重新启动apache吗?
Shubham 2012年

谢谢。显然,我更改了另一个php.ini文件。我在Apache文件中找到了一个。
FigenGüngör2012年

sudo apt-get为尚未安装php7.0的人安装php7.0
FoxMcCloud

Answers:


353

诊断

在脚本文件中查找以下内容

phpinfo();

如果找不到喜欢的Soap Client集合enabled肥皂应该出现在phpinfo()中的方式

固定

请执行下列操作:

  1. 找到php.ini您的apache bin文件夹,即Apache/bin/php.ini
  2. ;从开头删除extension=php_soap.dll
  3. 重新启动Apache服务器
  4. phpinfo();再次查找并检查是否与上述图片相似
  5. 如果您这样做,问题就解决了!

另一方面,如果这不能解决您的问题,则可能需要在此处检查SOAP要求。另外,在评论部分,您可以找到有关连接到https的好的建议。


12
别忘了也取消注释此行:;extension=php_openssl.dll 如果您要访问的WSDL在https协议下
juliangonzalez 2015年

在我的情况下,它没有安装,并且在php.in um中没有使用php5.6 centos6.9的extension = php_soap.dll
zero8 '17

7
我正在使用xamp,只是extension=soap不加注释就可以了。
SAMPro

3
sudo apt-get为尚未安装php7.0-soap的人们安装php7.0-soap
FoxMcCloud

1
对我来说,SoapClient仍然找不到该课程。我在phpinfo()中看到已启用它,启用了扩展名,也启用了openssl,一切正常,但未找到该类。我使用Wampserver 3.0和PHP 5.6,但重新启动了Apache,但不能解决问题。请帮忙。
前夕

149

要在PHP-7中安装SOAP,请在Ubuntu终端中运行以下命令:

sudo apt-get install php7.0-soap

要在PHP-7.1中安装SOAP,请在Ubuntu终端中运行以下命令:

sudo apt-get install php7.1-soap

要在PHP-7.2中安装SOAP,请在Ubuntu终端中运行以下命令:

sudo apt-get install php7.2-soap

要在PHP-7.3中安装SOAP,请在您的Ubuntu终端中运行以下命令:

sudo apt-get install php7.3-soap

11
还请确保运行sudo service apache2 reload
Steve Obbayi,2016年

9
就我而言是sudo apt-get install php-soap
dhcgn

我已经升级到php7,却忘记了重新安装php70w-soap(我总是完全删除旧版本的PHP)
zzapper

1
如果我想安装php7.3-soap :-)怎么办?我搞不清楚了。
克里斯

@克里斯你尝试:sudo apt-get install php7.2-soap
Nahid

21

对于AWS(RHEL):

sudo yum install php56-soap

(这里的56是5.6 PHP版本-在此处放置您的版本)。


3
这可能是sudo yum install php56w-soap!我忘了w,它安装了,但仍然没有用。花了一段时间才能弄清楚,但现在可以了。
SPRBRN

1
对我来说,这是sudo apt-get install php5.6-soap
Sukeshini '16

1
不需要版本,只需要php-soap
ampachts

15

要在PHP5.6中安装SOAP,请在Ubuntu 14.04终端中运行以下命令:

sudo apt-get install php5.6-soap
service php5.6-fpm restart
service apache2 restart

查看是否启用了SOAP:

php -m

(您应该在返回的文本之间看到SOAP。)


11

我必须跑步

php-config --configure-options --enable-soap 

以root身份并重新启动apache。

可行!现在,我的phpinfo()调用显示了SOAP部分。


1
reboot应该提到的是,它的apache重新启动,而不是服务器重新启动。
machineaddict

8

找不到SOAP部分,phpinfo()因此我必须安装它。

有关信息,该SOAP扩展需要libxmlPHP扩展。这意味着--enable-libxml根据http://php.net/manual/en/soap.requirements.php也需要传递

从WHM面板

  1. 软件»模块安装程序»PHP扩展和应用程序包
  2. 安装SOAP 0.13.0

    警告:不赞成使用“ pear / HTTP_Request”,而建议使用“ pear / HTTP_Request2”

    确定安装:channel://pear.php.net/SOAP-0.13.0

  3. 安装HTTP_Request2(可选)

    确定安装:channel://pear.php.net/HTTP_Request2

  4. 重新启动服务»HTTP服务器(Apache)

从shell命令

1.pear安装SOAP

2.重启


WHM的EasyApache界面在“详尽选项”列表中还具有启用“肥皂”的选项。
安德鲁

8

我在PHP 7.0.22-0ubuntu0.16.04.1 nginx上解决了这个问题

sudo apt-get install php7.0-soap

sudo systemctl restart php7.0-fpm
sudo systemctl restart nginx

3

对于Docker *,请添加以下行:

RUN apt-get update && \
    apt-get install -y libxml2-dev && \
    docker-php-ext-install soap

*:对于基于debian的图像,即。不适用于高山变种。



0

您必须继承nusoap.php类并将其放在您的项目目录中,您可以从Internet下载它。

使用此代码:

require_once('nusoap.php');

2
NuSoap创建一个Web服务(服务器)。最初的问题是使用WebService(客户端),因此NuSoap与上述问题之间没有关系
Carlos B. Feitoza Filho 2014年

也许您在使用nusoap的时候在想些什么,这就是您为什么要这么做的原因。
零零零八年七月

“互联网。”
Attila Fulop

0

在Centos 7.8和PHP 7.3上

yum install php-soap
service httpd restart
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.