这就是问题所在。我在 Apache 上安装了 PHP 5.2.9,但无法升级 PHP。我有办法在 PHP 5.2.9 中启用 SOAP 吗?当 PHP 手册说“要启用 SOAP 支持,请使用 --enable-soap 配置 PHP”时,它根本没有帮助。我该如何配置?
3 回答
让 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
.
在 Ubuntu/Debian 中,您可以安装:
$ sudo apt-get install php-soap
或者在 RHEL/Fedora 中你可以安装:
$ sudo yum install php-soap
安装后,您可能需要放置一个 ini 文件并重新启动 Apache。
就您的问题而言:不,如果激活 from.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
还需要)。
为了重新编译的目的,我必须保留一个单独的虚拟机,其中安装了所有东西。