这就是问题所在。我在 Apache 上安装了 PHP 5.2.9,但无法升级 PHP。我有办法在 PHP 5.2.9 中启用 SOAP 吗?当 PHP 手册说“要启用 SOAP 支持,请使用 --enable-soap 配置 PHP”时,它根本没有帮助。我该如何配置?
让 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。
如果您的机器中有 Ubuntu,以下步骤将对您有所帮助:
如果您有soap(客户端/服务器),请首先检查您的php测试文件,或者使用phpinfo();并在浏览器中查看结果。如果你有它,它看起来像下图(如果没有,请转到第 2 步):
https://i.stack.imgur.com/uwhrj.png
打开终端并粘贴:sudo apt-get install php-soap。在终端中重新启动您的 apache2 服务器: service apache2 restart。在步骤 1 中再次检查使用您的 php 测试文件似乎是我的。
sudo service php-fpm restart
,就像我在 AWS 上所做的那样
就您的问题而言:不,如果从 .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
等等(它们还不够em>已安装;它们必须是开发者版本,即带有标题等;在大多数发行版中,安装 libjpeg
可能还不够,您可能需要 libjpeg-dev
还)。
为了重新编译的目的,我必须保留一个单独的虚拟机,其中安装了所有东西。
不定期副业成功案例分享
dnf install php-soap
今天在 32 位 Fedora 22 上运行良好。apt-get install php7.0-soap
apt-get install php-soap
仍然对我有用。