在Magento Event Listener中创建nusoap对象会引发异常

时间:2013-05-09 15:55:15

标签: php magento events magento-1.7 nusoap

在Magento 1.7.0.2中,我创建了一个事件监听器,每次应用程序检查产品的最终价格时都会触发(最终代码不会触发该事件,但为了方便测试,我在这里尝试)。

事件触发得很好并相应地改变了价格,但是当我尝试创建一个nusoap对象来对外部Web服务进行非wsdl调用时,它会发出警告并且不会创建客户端对象。

代码是:

    $endpoint = 'http://[ip]:155/[client_name]/[client_name].soap2';

    try {
        $client = new nusoap_client($endpoint);
    } catch (Exception $e) {
        echo $e->getMessage();
    }

警告提出:

Warning: include(Nusoap/Client.php) 
[<a href="function.include">function.include</a>]: 
failed to open stream: No such file or directory  in 
/var/www/clients/client3/magento/lib/Varien/Autoload.php on line 93

如果在Magento根目录上执行,相同的代码工作正常,我甚至可以调用正确的Web服务并解析响应。

我已经在Magento root lib目录中包含了nusoap库(v.9.5.5),我没有特别要求它们。

1 个答案:

答案 0 :(得分:1)

您已经确定了问题

  

我已将nusoap库(v.9.5.5)包含在Magento root lib目录中,我没有特别要求它们

当您尝试使用nusoap_client类实例化对象时,PHP无法找到该类。根据标准行为,它调用Magento自动加载器方法,该方法将类nusoap_client转换为文件路径Nusoap/Client.php,然后尝试include该文件。 PHP,按照标准include行为,在

中查找文件
app/code/local/Nusoap/Client.php
app/code/community/Nusoap/Client.php
app/code/core/Nusoap/Client.php
lib/Nusoap/Client.php
path/of/the/calling/script/Nusoap/Client.php

您在任何这些位置都没有文件,因此PHP会发出警告。手动要求您的nusoap对象,在上述路径之一处放置对象的加载器,或添加处理库位置的自定义自动加载器。