我试图在我们的服务器上安装Wordpress进行测试,但为了做到这一点,我必须将当前的PHP版本升级到5.3。我升级了PHP,现在我发现我们的Purolator发货模块已不再有效。根据我们的主机支持,“purolator.php”文件缺少新版本PHP所需的数据。不幸的是,我无法恢复我们的PHP版本,我们的程序员也不在了。
这是我从网站托管服务团队获得的错误消息:
tail /var/www/vhosts/phantomcables.com/statistics/logs/error_log -f
[Thu Jul 19 08:34:28 2012] [error] [client 70.51.168.201] PHP Fatal
error: Class 'SoapClient' not found in
/var/www/vhosts/phantomcables.com/httpdocs/shippings/purolator.php on line
49, referer: https://phantomcables.com/index.php?dispatch=checkout.cart
这些是第40至72行:
function createPWSSOAPClient()
{
/** Purpose : Creates a SOAP Client in Non-WSDL mode with the appropriate authentication and
* header information
**/
//Set the parameters for the Non-WSDL mode SOAP communication with your Development/Production credentials
//echo DIR_SHIPPING_FILES."estimatingservice.wsdl";
$url = "https://webservices.purolator.com/PWS/V1/Estimating/EstimatingService.asmx";
$client = new SoapClient( DIR_SHIPPING_FILES."estimatingservice.wsdl",
array (
'trace' => true,
'location' => $url,
'uri' => "http://purolator.com/pws/datatypes/v1",
'login' => PRODUCTION_KEY,
'password' => PRODUCTION_PASS
)
);
//Define the SOAP Envelope Headers
$headers[] = new SoapHeader ( 'http://purolator.com/pws/datatypes/v1', 'RequestContext',
array (
'Version' => '1.0',
'Language' => 'en',
'GroupID' => 'xxx',
'RequestReference' => 'Rating Example'
)
);
//Apply the SOAP Header to your client
$client->__setSoapHeaders($headers);
return $client;
}
非常感谢任何帮助。
答案 0 :(得分:3)
您的服务器上似乎没有安装 php-soap 软件包。 型
phpinfo();
在您的代码中并检查'Soap Client'是否已启用。 如果没有,我不知道你的发行版和包管理器,但这里是我使用的Fedora的代码:
$ yum install php-soap
我建议你和你的程序员一起做这件事,或者你的身边有一个系统管理员,你永远不知道会发生什么。在任何安装之前备份也很有用!
答案 1 :(得分:2)
您需要添加(或删除之前的任何评论字符)
extension=soap.so
到您的php.ini
文件,然后重新启动Web服务器。
如果您在查找php.ini
文件时遇到问题,请创建一个包含以下内容的页面:
<?php phpinfo();
并在浏览器中加载该文件。
在某些系统上,此设置实际上可能不在php.ini
中。例如,如果您使用的是Zend Server,则该设置将存在于/usr/local/zend/etc/conf.d/soap.ini
。
答案 2 :(得分:2)
已发布here
执行以下操作:
Do the following: Locate php.ini in your apache bin folder, I.e Apache/bin/php.ini Remove the ; from the beginning of extension=php_soap.dll Restart your Apache server Look up your phpinfo(); again and check if you see a similar picture to the one above If you do, problem solved!
答案 3 :(得分:1)
所以我们又回到了旧版本的PHP,并重新启用了SOAP。显然这是问题所在,不确定为什么不适用于较新版本的PHP。
再次感谢您的帮助。这是一个很棒的社区。 p>
答案 4 :(得分:-2)
启用SOAP扩展,在composer.json中需要它,如下所示:
{
"require": {
"ext-soap": "*"
}
}