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

Posted

技术标签:

【中文标题】如何在 linux 上的 php 中启用 --enable-soap?【英文标题】:How do I enable --enable-soap in php on linux? 【发布时间】:2012-07-20 00:43:00 【问题描述】:

这就是问题所在。我在 Apache 上安装了 php 5.2.9,但无法升级 PHP。我有办法在 PHP 5.2.9 中启用 SOAP 吗?当 PHP 手册说“要启用 SOAP 支持,请使用 --enable-soap 配置 PHP”时,它根本没有帮助。我该如何配置?

【问题讨论】:

您是否从预制包安装了 php?检查您的发行版的存储库,看看是否有可用的肥皂包。 不,我没有安装它。我希望编辑 php.ini 是启用 SOAP 所需的全部内容。但似乎它需要更多的东西。 你的发行版是什么?您可能可以避免从源代码配置和编译 PHP。您很可能可以安装一个软件包。 如果是你的机器,真的没有“不能升级PHP”这回事。最坏的情况,你从源代码构建并将其粘贴在 /usr/local 或其他地方。 操作系统是 Fedora (linux 2.6.27.41-170.2.117.fc10.i686 gnome 2.24.3 【参考方案1】:

使 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 通常是使用 --enable-soap 配置 PHP 所得到的。

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

$ sudo apt-get install php-soap

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

$ sudo yum install php-soap

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

【讨论】:

我安装了它,当我运行命令行时:php -i | grep -i 肥皂。我得到soap 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 肥皂.wsdl_cache_ttl => 86400 => 86400。但我不知道你上面提到的ini文件的位置。我在 /etc/php5/cgi, cli, fpm 中添加了它,但它不起作用。 /usr/lib/php5/module 中没有soap.so 或/etc/php5/conf.d/ 中的soap.ini 文件 dnf install php-soap 今天在 32 位 Fedora 22 上运行良好。 对于 PHP7:apt-get install php7.0-soap 在带有 PHP7.0 的 Ubuntu 16.04 上运行 apt-get install php-soap 仍然对我有用。 对于 PHP 5.6,需要运行这个 cmd:sudo apt-get install php5.6-soap【参考方案2】:

如果您的机器中有 Ubuntu,以下步骤将对您有所帮助:

    首先检查你的php测试文件是否有soap(客户端/服务器)或者没有使用phpinfo();并在浏览器中查看结果。 如果你有它,它看起来像下图(如果没有,请转到第 2 步):

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

    在终端重新启动您的 apache2 服务器:service apache2 restart。

    再次检查使用您的 php 测试文件是否与第 1 步中的我一样。

【讨论】:

如果您在第 2 步中安装的是 Ubuntu 16.04 版,您只能输入:sudo apt install php-soap。 如果您的 PHP 在 FHM 下运行,那么您可能还需要 sudo service php-fpm restart,就像我在 AWS 上所做的那样【参考方案3】:

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

一般来说,双破折号--switches 设计用于从头开始重新编译 PHP。

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

./configure --prefix ...

PHP 使用的configure 命令可能会显示为phpinfo()。重复它应该会给你一个你现在已经安装的 PHP 的精确副本。添加--enable-soap 将启用 SOAP 以及其他所有功能。

也就是说,如果您不熟悉 PHP 重新编译,不要这样做。它还需要您可能拥有或不拥有的几个辅助库 - freetypegdlibjpegXMLexpat 等等(它们还不够 已安装;它们必须是开发者版本,即带有标题等;在大多数发行版中,安装libjpeg 可能还不够,您可能需要libjpeg-dev也)。

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

【讨论】:

以上是关于如何在 linux 上的 php 中启用 --enable-soap?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Linux 上的 PHP 中启用 cURL 支持

如何在 Mac OSX 10.9 上的 php 中启用 mcrypt?

如何在 gitlab.com 上的 PHP 项目的作业列表中启用代码覆盖率输出

如何在 xampp linux 上启用 mcrypt php 扩展

如何在 linux ubuntu 的 php 7 中启用 GD 库?

如何检查在 Ubuntu Linux 12.04 LTS 中启用/禁用了哪些 PHP 扩展?