【问题标题】:PHP SOAP wsdl Fatal Error & XdebugPHP SOAP wsdl 致命错误和 Xdebug
【发布时间】:2013-01-31 13:46:56
【问题描述】:

我真的不明白 PHP SOAP 库发生了什么 我使用 SOAP 服务,它运行良好,但有时我知道 “致命错误:SOAP-ERROR:解析 WSDL:........”

我读到这个错误是无法捕获的,因为 Xdebug 已打开,解决方案是禁用它以便能够捕获错误,...

但我不工作!错误以橙色和红色显示 你有什么想法吗??

(我使用的是最新版本的 wamp,我不知道如何检查我选择的是 64 位还是 32 位,但它是 apache 2.2.22,php 5.3.13)

提前感谢您的帮助! :)

<?php
xdebug_disable();
try {
  $sc = new SoapClient("some-wrong.wsdl", array('exceptions' => true));
} catch (Exception $e) {
  echo 'Error Caught :-)';
}
?>

我想补充一点:

有时我有 2 个警告和 1 个错误

 - Warning: SoapClient::SoapClient -> "failed to open stream ..."
 - Warning: SoapClient::SoapClient -> "failed to load external entity ..."
 - Fatal error: SOAP-ERROR: Parsing WSDL -> "Couldn't load from ..."

有时,只是致命错误

我在 new SoapClient(..... 并且当出现未捕获的错误时,不会显示回显

我必须补充一点,我调用 SoapClient '跟踪' => 1,'异常' => 1,

我在 apache 错误日志中有这个(** 用来隐藏)

[Thu Jan 31 16:16:02 2013] [error] [client 127.0.0.1] PHP Fatal error:  SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://******?wsdl' : Start tag expected, '<' not found\n in D:\\Programmes\\wamp\\www\\******.php on line 144, referer: http://localhost/******.php
[Thu Jan 31 16:16:04 2013] [error] [client 127.0.0.1] PHP Warning:  ||| faultcode: WSDL ||| faultstring: SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://******?wsdl' : Start tag expected, '<' not found\n ||| in D:\\******.php on line 201, referer: http://localhost/******.php
[Thu Jan 31 16:16:04 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to a member function __getLastRequestHeaders() on a non-object in D:\\Programmes\\wamp\\www\\******.php on line 204, referer: http://localhost/******.php

我编辑了我的第一条消息,因为我是新成员,无法在 8 小时之前回复我自己的消息

所以今天早上,我更改了 apache 的默认堆栈大小,因为 apache 仅在 apache 错误日志中使用这一行:[notice] Parent: child process exited with status 255 -- Restarting。

  • 我已经安装了 Visual Basic 2012(评估;))
  • 使用了 Visual Basic 命令控制台(开始 > Micrososft Visual Studio 2012 > Visual Studio 工具)
  • 检查了父亲键入“cd ***my_path_containing_apache_bin_directory**\bin dumpbin /all httpd.exe | find "stack"" (是 "40000 size of stack reserve")
  • 键入editbin /stack:1048576 httpd.exe 增加大小
  • 别忘了在 httpd.exe 文件上设置管理员权限 + 退出 WANP !!! (因为这个,我失去了一个上午!,editbin 正在返回一个 LINK 错误!!)

-> 这很奇怪,因为在完成此操作后,我遇到了 WSDL 未捕获的错误,但由于几个小时我没有出现这种错误,可能只是我使用的代理列表能够正确连接, .. ??

【问题讨论】:

  • 错误可能是“众所周知的”,但在问题中引用整个错误消息仍然是个好主意。为了帮助您,我们需要了解错误消息中的特定内容。
  • 好吧,我只是再次添加错误,所以内存堆栈没有链接,...

标签: php soap wsdl xdebug fatal-error


【解决方案1】:

SOAP 扩展做了一些奇怪的事情并覆盖了一个内部 PHP 错误处理程序。这与 Xdebug 的错误覆盖机制有点冲突。请务必包含完整的错误消息,我也许可以从那里更新我的答案。

【讨论】:

  • 所以我只是用错误元素更新我的消息,它足够还是你需要其他东西?如果是,你能告诉我在哪里可以找到你需要的元素吗?再次感谢 :) (你是关于 PHP 错误的 Mentis 的 Derick 发帖?)
  • 你好,我刚刚放了详细的错误信息!
  • Derick,我有一个非常快的问题:如果我关闭 Xdebug,错误会被捕获?
【解决方案2】:

这是我得到的 Xdebug 详细错误消息(** 隐藏)

( ! ) Warning: SoapClient::SoapClient(http://****?wsdl) [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: failed to open stream: Une tentative de connexion a �chou� car le parti connect� n�a pas r�pondu convenablement au-del� d�une certaine dur�e ou une connexion �tablie a �chou� car l�h�te de connexion n�a pas r�pondu. in D:\Programmes\wamp\www\****.php on line 146
Call Stack
#   Time    Memory  Function    Location
1   0.0013  497672  {main}( )   ..\script gepir3-1.php:0
2   0.6920  695896  SoapClient->SoapClient( )   ..\script gepir3-1.php:146

( ! ) Warning: SoapClient::SoapClient() [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: I/O warning : failed to load external entity &quot;http://****?wsdl&quot; in D:\Programmes\wamp\www\****.php on line 146
Call Stack
#   Time    Memory  Function    Location
1   0.0013  497672  {main}( )   ..\script gepir3-1.php:0
2   0.6920  695896  SoapClient->SoapClient( )   ..\script gepir3-1.php:146

( ! ) Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://*****.asmx?wsdl' : failed to load external entity "http://****asmx?wsdl" in D:\Programmes\wamp\www\****.php on line 146
Call Stack
#   Time    Memory  Function    Location
1   0.0013  497672  {main}( )   ..\script gepir3-1.php:0
2   0.6920  695896  SoapClient->SoapClient( )   ..\script gepir3-1.php:146

我不明白为什么我的 php.ini 包含这个参数被关闭(自动启动也丢失了

; XDEBUG Extension

zend_extension = "D:/Programmes/wamp/bin/php/php5.3.13/zend_ext/php_xdebug-2.2.0-5.3-vc9.dll"

[xdebug]
xdebug.remote_enable = off
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "D:/Programmes/wamp/tmp"

【讨论】:

    【解决方案3】:

    也许有点晚了,但 Opcache 模块也会干扰 XDebug:https://xdebug.org/docs/compat

    必须禁用它才能使用 NetbeansIDE

    【讨论】:

      猜你喜欢
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 2021-07-17
      • 1970-01-01
      相关资源
      最近更新 更多