在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),我没有特别要求它们。
答案 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
对象,在上述路径之一处放置对象的加载器,或添加处理库位置的自定义自动加载器。