如何在Linux上的php中启用--enable-soap?


74

这就是很多问题。我在Apache上具有PHP 5.2.9,并且无法升级PHP。我有办法在PHP 5.2.9中启用SOAP吗?PHP手册说“要启用SOAP支持,请使用--enable-soap配置PHP”完全没有帮助。如何配置?


1
您是否从预制软件包中安装了php?检查发行版的存储库,看看是否有肥皂包可用。
Marc B

不,我没有安装它。我希望编辑php.ini是启用SOAP所需的全部。.但看来还需要更多。
netrox

你的发行版是什么?您可能可以避免从源代码配置和编译PHP。您很有可能可以安装一个软件包。
ghbarratt 2012年

如果是您的机器,实际上没有“无法升级PHP”之类的东西。最坏的情况是,您从源代码构建并将其粘贴在/ usr / local或其他内容中。
cHao 2012年

操作系统是Fedora(linux 2.6.27.41-170.2.117.fc10.i686 gnome 2.24.3
netrox 2012年

Answers:


175

使SOAP正常工作通常不需要从源代码编译PHP。我建议仅尝试将其作为最后的选择。

为了获得良好的效果,请检查您的phpinfo关于SOAP扩展的内容(如果有的话):

$ php -i | grep -i soap

确保缺少的是PHP扩展。

假设您在phpinfo中没有看到关于SOAP的任何信息,请查看可能有哪些PHP SOAP软件包可用。

在Ubuntu / Debian中,您可以使用以下命令进行搜索:

$ apt-cache search php | grep -i soap

或者在RHEL / Fedora中,您可以使用以下命令进行搜索:

$ yum search php | grep -i soap

通常有两个PHP SOAP软件包可供您使用,通常为php-soapphp-nusoapphp-soap通常是使用来配置PHP的结果--enable-soap

在Ubuntu / Debian中,您可以安装:

$ sudo apt-get install php-soap

或者在RHEL / Fedora中,您可以安装:

$ sudo yum install php-soap

安装后,您可能需要放置一个ini文件并重新启动Apache。


我安装了它,并且在运行命令行时:php -i | grep -i肥皂。我得到了Soap Client Soap Client =>已启用Soap Server =>已启用soap.wsdl_cache => 1 => 1 soap.wsdl_cache_dir => / tmp => / tmp soap.wsdl_cache_enabled => 1 => 1 soap.wsdl_cache_limit => 5 => 5 soap.wsdl_cache_ttl => 86400 => 86400。但是我不知道你上面提到的ini文件的位置。我在/ etc / php5 / {cgi,cli,fpm}中添加了它,但是它不起作用。在/ usr / lib / php5 / module或/etc/php5/conf.d/中没有soap.ini文件中没有
soap.so

dnf install php-soap今天的工作罚款32位的Fedora 22
马里奥

18
对于PHP7:apt-get install php7.0-soap
Rahil Wazir,

1
运行apt-get install php-soap与PHP7.0上的Ubuntu 16.04仍然为我工作。
Pawel

对于PHP 5.6,需要运行以下cmd:sudo apt-get install php5.6-soap
Von

9

如果您的计算机中装有Ubuntu,则以下步骤将为您提供帮助:

  1. 首先在php测试文件中检查是否有肥皂(客户端/服务器),或者不使用phpinfo()进行检查;并在浏览器中检查结果。如果您有它,它将看起来像下图(如果不转到步骤2):

在此处输入图片说明

  1. 打开终端并粘贴:sudo apt-get install php-soap。

  2. 在终端中重新启动apache2服务器:service apache2 restart。

  3. 要再次使用您的php测试文件进行检查,似乎在第1步中是我的。


如果您在步骤2中安装了Ubuntu ver 16.04,则只能输入:sudo apt install php-soap。
Noha Salah'7

1
如果您的PHP在FHM下运行,那么您可能也需要sudo service php-fpm restart像我在AWS上所做的那样
Henry Troup

6

就您的问题而言:不,如果从激活.ini还不够,并且您不能升级PHP,那么您无能为力。可以添加某些模块,但不是全部模块,而无需重新编译(zypper install php5-soapyum install php-soap)。如果这还不够,请尝试安装一些PEAR类以获得解释性的SOAP支持(NuSOAP等)。

通常,双破折号--switches设计用于从头开始重新编译PHP。

您将下载PHP源代码包(例如,压缩的.tgztarball),将其展开到某个位置,然后,例如在Linux下,运行configure脚本

./configure --prefix ...

configurePHP使用的命令可能显示为phpinfo()。重复相同的操作,将为您提供现在已安装的PHP的准确副本。--enable-soap然后,添加将启用SOAP以及其他所有功能。

就是说,如果您不熟悉PHP重新编译,请不要这样做。这还需要一些辅助库,你可能会,也可能不会,有可用的- ,freetypegdlibjpegXMLexpat等等等等(这还不够,他们被安装;他们必须是一个开发者版本,即与头部等;在大多数发行版中,仅libjpeg安装还不够,您可能libjpeg-dev还需要)。

为了重新编译,我必须保留一个单独的虚拟机并安装所有内容。

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.