如何在CentOS上启用SOAP

39

我们使用CentOS操作系统的VPS。我使用以下命令安装了SOAp:

$ yum install php-soap

然后我打开 php.ini 文件,去掉了 SOAP 扩展的注释。但是并没有找到它,所以我加入了下面这行代码:

Then I went to the php.ini file to uncomment the SOAP extension. It was not there, so I added the following line:

extension=soap.so

然后我通过运行命令重启了服务器

$ service httpd restart

但是SOAP仍未启用。 我收到了Fatal error: Class 'SoapClient'的错误信息。

如果我尝试重新安装它,我会收到以下消息:

Package php-soap-5.3.3-27.el6_5.x86_64 already installed and latest version
我尝试使用以下命令重新配置PHP:

我尝试使用以下命令重新配置PHP:

$ php-config '--disable-fileinfo' '--disable-pdo' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-libxml' '--enable-sockets' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-curl=/opt/curlssl/' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-kerberos' '--with-libdir=lib64' '--with-libxml-dir=/opt/xml2/' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-openssl=/usr' '--with-openssl-dir=/usr' '--with-pcre-regex=/opt/pcre' '--with-pic' '--with-zlib' '--with-zlib-dir=/usr' '--enable-soap'

需要帮忙吗?


我还不得不重新启动我的FastCGI服务。因为我使用的是nginx,相关命令是sudo systemctl restart php-fpm - Heath Raftery
5个回答

50

我认为,首先要做的事情是在Centos中安装soap

yum install php-soap


其次,查看肥皂包是否存在

yum search php-soap

第三步,因此您必须看到已安装的soap软件包的某些结果,现在在根目录中键入一个命令以搜索特定路径下的soap位置。

find -name soap.so

第四步,您将看到它的确切路径,只需复制该路径并找到php.ini以添加扩展路径,

通常情况下,在CentOS 6中,php.ini文件的路径在

/etc/php.ini

第五步,将以下代码行添加到php.ini文件中。
extension='/usr/lib/php/modules/soap.so'

然后保存文件并退出。

在Centos中运行第六步的Apache重启命令。我认为有两个命令可以重启您的Apache(哪一个更容易使用取决于您)。

service httpd restart

或者

apachectl restart

最后,在浏览器中检查phpinfo()输出,您应该看到SOAP部分,其中列出并显示已启用的SOAP客户端、SOAP服务器等。

6
在最近的CentOS版本中,PHP扩展的配置位于/etc/php.d目录下,每个扩展都有一个单独的.ini文件。但在我的情况下,运行yum install php-soap后,我只需要重新启动Apache,soap.ini文件已经存在了。 - Matt Browne
@Anil 在运行命令find -name soap.so在根目录下找到后,我发现这是soap的路径./usr/lib64/php/modules/soap.so 。我将此行代码设置为我的扩展='./usr/lib64/php/modules/soap.so' /etc/php.ini文件并重新启动CentOS 6中的httpd服务。但仍然无法启用SOAP服务。有什么想法吗? - Maulik patel
@mattBrowne,对我来说重启Apache没有帮助,我不得不重新启动php-fpm服务。 - bhu1st

13

在 CentOS 7 上,以下内容有效:

yum install php-soap

这将自动在 /etc/php.d 下创建一个 soap.ini 文件。

对我来说,扩展本身位于 /usr/lib64/php/modules。您可以通过执行以下操作确认您的扩展目录:

php -i | grep extension_dir

安装完成后,您可以使用新的服务管理器来简单地重新启动Apache,如下所示:

systemctl restart httpd

感谢Matt Browne提供有关 /etc/php.d 的信息。


2
我尝试过这个。但是在安装php-soap时出现了错误,所以我搜索并找到了这个链接: https://dev59.com/RYDba4cB1Zd3GeqPAB9S长话短说,这解决了我的问题: yum install php55w-soap - Gabo
1
对于2018年的更新 - 我遇到了一个错误:php56w-common与...冲突,所以我只是修改了@GaboLato提供的安装命令,并用我的错误号码替换了它:yum install php56w-soap,然后一切都正常工作了! - MrLewk

9
我使用以下方式在CentOS Linux release 7.1.1503 (Core)上安装了php-soap。

1) yum install php-soap

================================================================================
 Package              Arch           Version                 Repository    Size
================================================================================
Installing:
 php-soap             x86_64         5.4.16-36.el7_1         base         157 k
Updating for dependencies:
 php                  x86_64         5.4.16-36.el7_1         base         1.4 M
 php-cli              x86_64         5.4.16-36.el7_1         base         2.7 M
 php-common           x86_64         5.4.16-36.el7_1         base         563 k
 php-devel            x86_64         5.4.16-36.el7_1         base         600 k
 php-gd               x86_64         5.4.16-36.el7_1         base         126 k
 php-mbstring         x86_64         5.4.16-36.el7_1         base         503 k
 php-mysql            x86_64         5.4.16-36.el7_1         base          99 k
 php-pdo              x86_64         5.4.16-36.el7_1         base          97 k
 php-xml              x86_64         5.4.16-36.el7_1         base         124 k

Transaction Summary
================================================================================
Install  1 Package
Upgrade             ( 9 Dependent packages)

Total download size: 6.3 M
Is this ok [y/d/N]: y
Downloading packages:
------
------
------

Installed:
  php-soap.x86_64 0:5.4.16-36.el7_1

Dependency Updated:
  php.x86_64 0:5.4.16-36.el7_1          php-cli.x86_64 0:5.4.16-36.el7_1
  php-common.x86_64 0:5.4.16-36.el7_1   php-devel.x86_64 0:5.4.16-36.el7_1
  php-gd.x86_64 0:5.4.16-36.el7_1       php-mbstring.x86_64 0:5.4.16-36.el7_1
  php-mysql.x86_64 0:5.4.16-36.el7_1    php-pdo.x86_64 0:5.4.16-36.el7_1
  php-xml.x86_64 0:5.4.16-36.el7_1

Complete!

2)使用yum搜索php-soap

============================ N/S matched: php-soap =============================
php-soap.x86_64 : A module for PHP applications that use the SOAP protocol

3) 重新启动httpd服务

验证运行以下命令

4) php -m | grep -i soap

soap


在根目录下运行命令 find -name soap.so 后,我发现 soap 的路径为 ./usr/lib64/php/modules/soap.so。我在 /etc/php.ini 文件中设置了这一行 extension='./usr/lib64/php/modules/soap.so' 并重启了 Cent OS 6 上的 httpd 服务,但仍无法启用 soap 服务。有什么想法吗? - Maulik patel
我需要帮助。安装soap会升级其他依赖项的版本吗?它显示与您上面描述的相同。 - Munish Chechi
1
@MunishChechi 我不这么认为,但是为了兼容性,您可能需要升级其他依赖项。 - Mukesh

5

yum install php-soap命令将安装php 5.x的Soap模块。

如果要在您的环境中安装正确的版本,建议创建一个名为info.php的文件,并放入以下代码:<?php echo phpinfo(); ?>

在标题中,您将看到您使用的版本:

enter image description here

现在您已经知道了正确的版本,可以运行以下命令:yum search php-soap

此命令将返回可用的版本:

php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php54-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php55-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php56-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php70-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php71-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php72-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php73-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php74-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
rh-php70-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
rh-php71-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
rh-php72-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol

现在你只需要选择适合你的PHP版本的正确模块。

以这个例子为例,您应该运行此命令 php72-php-soap.x86_64


1
经过数小时的搜索,我认为我的问题是命令 yum install php-soap 安装了最新版本的soap用于最新版本的php。
我的php版本是 7.027,但最新的php版本是 7.2,所以我不得不寻找正确的soap版本,最终在 这里 找到了它。
现在,php -m | grep -i soap 可以正常工作,输出为:soap
不要忘记重新启动 httpd 服务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接