Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Magento SOAP-ERROR:解析WSDL:canned';无法从urlpath加载_Php_Soap_Magento - Fatal编程技术网

PHP Magento SOAP-ERROR:解析WSDL:canned';无法从urlpath加载

PHP Magento SOAP-ERROR:解析WSDL:canned';无法从urlpath加载,php,soap,magento,Php,Soap,Magento,我试图通过传递一个托管在本地机器、开发环境上的url来创建soap客户机,我一直收到这个错误。我过去能打这个电话,效果很好 基本上我所做的就是这样 $client=新的SoapClient(“”) 如果我在浏览器中找到url,它就会出现,因此我知道它是正确的位置。在Magento论坛上有一些类似的帖子,但我不知道这是Magento特有的问题。他们提到的每件事都是我已经拥有的解决方案。他们说要编辑hosts文件,例如127.0.0.1 website.com 我已经有了这个,因为它被设置为虚拟主机

我试图通过传递一个托管在本地机器、开发环境上的url来创建soap客户机,我一直收到这个错误。我过去能打这个电话,效果很好

基本上我所做的就是这样

$client=新的SoapClient(“”)

如果我在浏览器中找到url,它就会出现,因此我知道它是正确的位置。在Magento论坛上有一些类似的帖子,但我不知道这是Magento特有的问题。他们提到的每件事都是我已经拥有的解决方案。他们说要编辑hosts文件,例如127.0.0.1 website.com

我已经有了这个,因为它被设置为虚拟主机

这是我的错误日志中的错误

[Fri Jun 04 12:30:37 2010] [error] [client 127.0.0.1] PHP Fatal error:  SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://virtual.website.com:81/api/soap/?wsdl' : XML declaration allowed only at the start of the document\n in /usr/local/sites/virtual.website.com/www/CUSTOMSCRIPTS/removeProductImages.php on line 6
[Fri Jun 04 12:30:37 2010] [error] [client 127.0.0.1] PHP Stack trace:
[Fri Jun 04 12:30:37 2010] [error] [client 127.0.0.1] PHP   1. {main}() /usr/local/sites/virtual.website.com/www/CUSTOMSCRIPTS/removeProductImages.php:0
[Fri Jun 04 12:30:37 2010] [error] [client 127.0.0.1] PHP   2. SoapClient->SoapClient(*uninitialized*) /usr/local/sites/virtual.website.com/www/CUSTOMSCRIPTS/removeProductImages.php:6

更新::我发现这不是SOAP的问题,而是在我的XML文件中添加了额外的空间。

更改Magento或您的本地环境的URL设置后,您应该始终清除Magento/var/cache/directory。通常所有奇怪的错误都会随之消失。

答案似乎是我们没有启用xmlrpc PHP扩展。一旦我们这样做了,错误就消失了。

问题也可能与
soap.wsdl\u cache\u dir
目录上的权限有关。我迟到了,但希望我的回答对将来的人有用

我也有同样的问题。我已经安装了Zend服务器(PHP5.3.9),并且得到了相同的错误。我搜索了很多,应用了所有可用的解决方案,但都失败了。。。。 最后,我安装了wamp,然后在那里运行“Soap客户端”脚本,它成功运行

然后我谈到了Zend服务器(PHP5.3.9)在“Soap客户端”脚本中有一些默认错误。我卸载了Zend服务器(PHP5.3.9),安装了Zend服务器(PHP5.4.11),并在那里运行“Soap客户端”脚本。这次它运行成功

结论: 请使用最新的PHP版本(Zend Server)或(Wamp Server),因为在一些PHP版本中存在默认的“Soap客户端”错误,我在上面提到过

谢谢,
Kashif

我在我的WAMP设置中通过启用php_openssl扩展解决了这个问题,因为我从使用https://加载的URL。

错误消息不是很详细。。。你能把你的代码片段放在一个try/catch结构中,在那里你可以var_转储抛出的异常,看看是否有更多的细节吗?我不知道此构造函数中的所有字段是否都在您收到的错误消息中可见。我尝试过,但似乎没有捕获它。我觉得很奇怪。还有一件事我让我的同事在他们本地的机器上对同一个项目进行了试验,结果成功了。这让我觉得我的本地机器发生了一些奇怪的事情。它没有被捕获,因为这是一个致命的错误。这是一个bug:请看这里,但您的错误消息中有一些有趣的内容:“仅允许在文档开头使用XML声明”我认为在此之前一定有一些意外的内容,请尝试使用wget获取页面,并使用vi查看代码,要查看此XML声明之前是否有额外字符。嗯,执行此操作时会有空格,但此文件应与其他同事拥有的任何其他文件相同,并且对他们有效。另一件事,代码中的实际XML文件,XML声明位于第1行,可能会在那里添加空格。这实际上是一个注释,没有答案。再重复一点。