我试图找到更具体的答案,找不到有关此错误的任何帮助。可能只是因为我不熟悉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
发生这种情况时我正在尝试提交订单。我已将商品添加到购物车,登录,输入运输数据并查看订单,当我点击提交订单时,它会暂停一段时间并给我这条消息。当我通过代码调试(需要FOREVER)时,我终于到了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);
}
任何想法对于查找内容甚至此消息的含义都非常有帮助。另外,我在使用apache 2.2的Windows环境中运行的PHP 5.3.6中安装并启用了SOAP。
答案 0 :(得分:7)
感谢Joe,我做了一些挖掘,发现Cybersource编写了模块以使用PHP5.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)
这似乎解决了这个错误。感谢Joe帮助您解决此错误。
答案 1 :(得分:4)
这实际上是关于子类化SoapClient的PHP错误。基本上,当你有这样的事情时会发生这种情况:
class Foo {
public function doSomething() {
// ...
}
}
class Bar extends Foo {
public function doSomething($totallyUnreasonableParameter) {
// ...
}
}
您的问题几乎肯定是服务器上安装的SOAP版本的问题。我没有特别看到这一点,但它可能与PHP版本(5.3.6)有关,我不知道它是受支持的版本。
希望有所帮助!
谢谢, 乔