繁体   English   中英

找不到PHP错误类别'SoapClient'

[英]PHP Error Class 'SoapClient' not found

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

任何帮助将不胜感激。

看来您尚未在服务器上安装php-soap软件包。 类型

phpinfo();

在您的代码中,并检查“ Soap Client”是否已启用。 如果没有,我不知道您的发行和软件包管理器,但是这是我使用的Fedora的代码:

$ yum install php-soap

我建议与您的程序员或您身边的系统管理员一起执行此操作,而您永远不知道会发生什么。 在进行任何安装之前,备份也很有用!

您将需要添加(或删除任何注释字符)

extension=soap.so

php.ini文件,然后重新启动Web服务器。

如果找不到php.ini文件,请创建一个包含以下内容的页面:

<?php phpinfo();

并在浏览器中加载该文件。

在某些系统上,此设置可能实际上不存在于php.ini 例如,如果您使用的是Zend Server,则该设置将位于/usr/local/zend/etc/conf.d/soap.ini

它已经发布在这里

请执行下列操作:

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!

因此,我们恢复了旧版本的PHP,并重新启用了SOAP。 显然,这就是问题所在,不确定为什么在新版本的PHP中不起作用。

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

启用S​​OAP扩展,在composer.json中要求它,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM