我试图找到一个更具体的答案,但找不到任何关于这个错误的帮助。这可能只是因为我不熟悉Magento或cybersource模块,或两者兼而有之,但无论哪种方式,我都无法理解这条消息试图告诉我什么。
这是一个例外,不仅会在调试时显示,而且如果我捕获了开发机器上的所有SMTP通信,它会显示在失败时收到的电子邮件中。
Exception: Strict Notice: Declaration of Mage_Cybersource_Model_Api_ExtendedSoapClient::__doRequest()
should be compatible with that of SoapClient::__doRequest() in
C:'code'app'code'local'Mage'Cybersource'Model'Api'ExtendedSoapClient.php on line 75
in C:'code'app'code'core'Mage'Core'functions.php on line 245
当这种情况发生时,我正在做的是尝试提交订单。我已经将商品添加到购物车中,登录,输入运输数据并查看订单,当我点击提交订单时,它会阻塞一段时间并给我这个消息。当我调试代码时(这需要永远),我终于到达了cybersource模块试图通过SOAP系统进行授权的地步,然后它抛出了这个错误。
它错误的确切位置是围绕这种方法
protected function getSoapApi($options = array())
{
$wsdl = $this->getConfigData('test') ? self::WSDL_URL_TEST : self::WSDL_URL_LIVE;
return new Mage_Cybersource_Model_Api_ExtendedSoapClient($wsdl, $options);
}
任何想法都将非常有助于寻找什么,甚至这条信息的含义。此外,我在PHP 5.3.6中安装并启用了SOAP,该PHP 5.3.6运行在带有apache 2.2的windows环境中。
多亏了Joe,我做了一些挖掘,发现Cybersource编写的模块可以与PHP.2.1一起使用,在那个版本中,SOAP客户端与PHP 5.3不同。__doRequest方法添加了一个导致不一致的项。所以我将ExtendedSoapClient.php文件中的代码从来自
public function __doRequest($request, $location, $action, $version)
至
public function __doRequest($request, $location, $action, $version, $oneWay = 0)
这似乎纠正了这个错误。感谢乔对这个错误的帮助。
这实际上是一个关于SoapClient子类化的PHP错误。基本上,当你有这样的东西时,就会发生这种情况:
class Foo {
public function doSomething() {
// ...
}
}
class Bar extends Foo {
public function doSomething($totallyUnreasonableParameter) {
// ...
}
}
您的问题几乎可以肯定是服务器上安装的SOAP版本的问题。我没有特别看到这一点,但它可能与PHP版本(5.3.6)有关,我不知道它是一个受支持的版本。
希望能有所帮助!
谢谢,Joe