如何在 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-soap
和 php-nusoap
。 php-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-soap
,yum install php-soap
)。如果还不够,请尝试安装一些 PEAR 类以支持解释型 SOAP(NuSOAP 等)。
一般来说,双破折号--switches
设计用于从头开始重新编译 PHP。
您将下载 PHP 源代码包(例如,作为压缩的 .tgz
tarball),将其展开到某个位置,然后,例如在 Linux 下,运行配置脚本
./configure --prefix ...
PHP 使用的configure
命令可能会显示为phpinfo()
。重复它应该会给你一个你现在已经安装的 PHP 的精确副本。添加--enable-soap
将启用 SOAP 以及其他所有功能。
也就是说,如果您不熟悉 PHP 重新编译,不要这样做。它还需要您可能拥有或不拥有的几个辅助库 - freetype
、gd
、libjpeg
、XML
、expat
等等(它们还不够 已安装;它们必须是开发者版本,即带有标题等;在大多数发行版中,安装libjpeg
可能还不够,您可能需要libjpeg-dev
也)。
为了重新编译,我必须保留一个单独的虚拟机,其中安装了所有内容。
【讨论】:
以上是关于如何在 linux 上的 php 中启用 --enable-soap?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Mac OSX 10.9 上的 php 中启用 mcrypt?
如何在 gitlab.com 上的 PHP 项目的作业列表中启用代码覆盖率输出
如何在 xampp linux 上启用 mcrypt php 扩展