0

在 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 根 lib 目录中包含了 nusoap 库(v. 0.9.5),我没有特别要求它们。

4

1 回答 1

1

您已经确定了您的问题

我已经在 Magento 根 lib 目录中包含了 nusoap 库(v. 0.9.5),我没有特别需要它们

当您尝试使用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对象,在上述路径之一放置对象的加载器,或添加处理您的库位置的自定义自动加载器。

于 2013-05-09T17:16:21.130 回答