【问题标题】:PHP Magento SOAP-ERROR: Parsing WSDL: Couldn't load from urlpathPHP Magento SOAP-ERROR:解析 WSDL:无法从 urlpath 加载
【发布时间】:2011-02-27 21:38:06
【问题描述】:

我正在尝试通过传递托管在我的本地计算机、我的开发环境上的 url 来创建一个肥皂客户端,但我不断收到此错误。我以前可以打这个电话,而且效果很好。

基本上我所做的就是这个

$client = new SoapClient('http://virtual.website.com:81/api/?wsdl');

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

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

这是我的 error_log 中的错误

[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 文件中添加了额外的空格。

【问题讨论】:

  • 错误信息不是很详细...你能不能把你的代码 sn-p 放在一个 try/catch 结构中,在那里你会 var_dump 抛出的异常,只是为了看看是否有更多的细节?我不知道这个构造函数fr2.php.net/manual/en/soapfault.soapfault.php中的所有字段是否都在你得到的错误信息中可见。
  • 我试过了,但它似乎没有抓住它。我觉得这很奇怪。另一件事。我让我的同事在他们本地机器上的同一个项目上进行了尝试,并且成功了。这让我觉得我的本地机器上发生了一些奇怪的事情。
  • 它没有被捕获,因为它是一个致命错误。这是一个错误:看这里bugs.php.net/bug.php?id=34657 但是你的错误消息中有一些有趣的东西:'XML 声明只允许在文档的开头'我认为它之前一定有一些意想不到的东西,尝试使用 wget 和用 vi 查看你的代码,看看这个 XML 声明之前是否有多余的字符。
  • hmm 这样做时会有空格,但这个文件应该与其他同事拥有的任何其他文件相同,并且对他们有用
  • 另一件事,代码中的实际 xml 文件,xml 声明在第 1 行,那里可能会增加空间。

标签: php soap magento


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这个问题也可能与soap.wsdl_cache_dir目录的权限有关

      【讨论】:

      【解决方案4】:

      我迟到了,但希望我的回复将来对某人有用。

      我遇到了完全相同的问题。我已经安装了 Zend Server (PHP 5.3.9) 并且遇到了同样的错误。我搜索了很多并应用了所有可用的解决方案,但失败了...... 最后,我安装了 wamp,然后在那里运行“Soap Client”脚本,它运行成功。

      然后我发现 Zend Server (PHP 5.3.9) 在“Soap Client”脚本中有一些默认错误。我卸载了 Zend Server (PHP 5.3.9) 并安装了 Zend Server (PHP 5.4.11) 并在那里运行“Soap Client”脚本。这次运行成功了。

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

      谢谢, 卡西夫

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多