找不到PHP错误类'SoapClient'

时间:2012-07-19 15:00:02

标签: php cs-cart

我试图在我们的服务器上安装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;
}

非常感谢任何帮助。

5 个答案:

答案 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。

再次感谢您的帮助。这是一个很棒的社区。

答案 4 :(得分:-2)

启用SOAP扩展,在composer.json中需要它,如下所示:

{
  "require": {
    "ext-soap": "*"
  }
}