如何安装soap扩展?

Posted

技术标签:

【中文标题】如何安装soap扩展?【英文标题】:How do I install soap extension? 【发布时间】:2011-01-31 08:03:57 【问题描述】:

如何安装 Soap?

我收到了这个错误:

致命错误:在第 16 行的 /home/user/mysite.com/path/to/file.php 中找不到类“SoapClient”

我在 DreamHost 中托管我的网站,它们不支持任何第三方安装。

更新:

我用这个脚本复制了 php.ini 文件:http://sxi.sabrextreme.com/dh-phpini

我正在使用来自网站的 API,它是这样说的:

#######################################################################
## You need to enable the following extensions in your PHP.ini file  ##
## php_openssl.dll          ##
## php_soap.dll             ##
#######################################################################

这里是我的 php.ini 文件的扩展名列表:

extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_mysql.dll
;extension=php_oci8.dll
**extension=php_openssl.dll**
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_yaz.dll
;extension=php_zip.dll

问题是,那里没有找到扩展 php_soap.dll。

【问题讨论】:

是的。远离 Dreamhost。 实际上,我不拥有该网站 :( @neo:如果不是关键任务站点,它们也不会那么糟糕。 【参考方案1】:

对于 Windows

    php.ini 中找到 extension=php_soap.dllextension=soap 并删除行首的注释分号。最终检查 conf.d 目录下的soap.ini

    重新启动服务器。

适用于 Linux

Ubuntu:

PHP7

阿帕奇

sudo apt-get install php7.0-soap 
sudo systemctl restart apache2

PHP5

sudo apt-get install php-soap
sudo systemctl restart apache2

OpenSuse:

PHP7

阿帕奇

sudo zypper in php7-soap
sudo systemctl restart apache2

nginx

sudo zypper in php7-soap
sudo systemctl restart nginx

【讨论】:

OpenSuse 用户:应该使用sudo zypper install php7.0-soap;但是需要提供正确的存储库(sudo zypper repos / sudo zypper addrepo 根据en.opensuse.org/Package_repositories)才能检索 PHP 扩展。 @Kamafeather,如何添加存储库? 再读一遍,我写了命令。要使用的正确 repo 取决于安装的 Opensuse 版本和 PHP 版本。检查“开发存储库”(download.opensuse.org/repositories/devel:/languages:/php:)和“Wiki - 附加存储库”(en.opensuse.org/Additional_package_repositories)。 如果您在 WIN10 上使用 XAMPP,则在 php.ini 中会出现 extension=soap 而不是 extension=php_soap.dll。只需取消注释,重新启动 apache 后即可使用 感谢 php 7.4 版的帮助【参考方案2】:

ubuntu 中安装 php_soapPHP7 使用以下命令。 Reference

sudo apt-get install php7.0-soap
sudo systemctl restart apache2.service

对于旧版本的 php,请使用以下命令并重新启动 apache。

apt-get install php-soap

【讨论】:

【参考方案3】:

在 php.ini 中找到这一行:

;extension=soap

然后删除分号;并重新启动Apache服务器

【讨论】:

【参考方案4】:

我遇到了同样的问题,我的 php.ini 中没有 extension=php_soap.dll 但这是因为我从旧的和以前的 php 版本中复制了 php.ini(不是一个好主意)。 我在 ext 目录中找到了 dll,所以我可以自己将它放入 php.ini 扩展=php_soap.dll 在 Apache 重新启动后,所有的工作都使用肥皂 :)

【讨论】:

【参考方案5】:

如何为 Linux Ubuntu...

sudo apt-get install php7.1-soap 

检查文件php_soap.ao是否存在于/usr/lib/php/20160303/

ls /usr/lib/php/20160303/ | grep -i soap
soap.so
php_soap.so
sudo vi /etc/php/7.1/cli/php.ini

换行:

;extension=php_soap.dll

extension=php_soap.so

sudo systemctl restart apache2

检查中...

php -m | more

【讨论】:

【参考方案6】:

请按照以下步骤操作:

 1) Locate php.ini in your apache bin folder, I.e Apache/bin/php.ini
 2) Remove the ; from the beginning of extension=php_soap.dll
 3) Restart your Apache server (by using : 
    # /etc/init.d/apache2 restart OR 
    $ sudo /etc/init.d/apache2 restart OR 
    $ sudo service apache2 restart)
 4) Look up your phpinfo();

 you may check here as well,if this does not solve your issue:  
 https://www.php.net/manual/en/soap.requirements.php

【讨论】:

【参考方案7】:

在带有 php7.3 的 Ubuntu 中:

sudo apt install php7.3-soap 
sudo service apache2 restart

【讨论】:

【参考方案8】:

Dreamhost 现在在其 PHP 5.3 版本中包含 SoapClient。您可以在dreamhost控制面板的域设置部分切换您的php版本。

【讨论】:

【参考方案9】:

他们不支持它,因为他们不会帮助您或负责您冲洗任何东西,但您可以安装自定义扩展。为此,您需要先set up a local install of php 5,在此过程中您可以编译您需要的扩展,也可以事后将它们动态添加到 php.ini。

【讨论】:

【参考方案10】:

对于 Ubuntu+php 5.6+nginx 我用过

sudo apt install php5.6-soap
sudo systemctl restart nginx
sudo systemctl restart php5.6-fpm.service

只有在那之后它才开始工作。

【讨论】:

以上是关于如何安装soap扩展?的主要内容,如果未能解决你的问题,请参考以下文章

PHP7.1-soap扩展安装

安装linux扩展方法

如何定义webservice响应的soap报文

如何找出安装的 savon(Ruby 的 SOAP 客户端)的版本?

PHP SOAP 扩展 Web Service 例子

如何动态启用 SOAP、CURL、OPENSSL 扩展?