我有以下函数:
public function query($sql)
{
$query = array(
"queryString"=>$sql
);
$queryWrapper = array(
"query"=>$query
);
try {
$result = $this->_client->__soapCall("query", $queryWrapper, null, $this->_header);
} catch (SoapFault $e) {
$this->_client->__getLastResponse();
}
return $result;
}问题是我可以在使用__soapCall()之前使用var_dump('anything');exit;,而且我可以看到“任何东西”。但是如果我在__soapCall()之后使用var_dump('stuff');exit;,我得到的只是一个空白页。我在var_dump('something');exit;的捕获,但我没有看到。它仍然只是一张白纸。我的问题是,是什么导致了这种情况?我会认为,如果我的查询中的表不存在,或者我的查询出了什么问题,我会得到某种错误。不过,我都快沉不住气了。
发布于 2018-08-07 03:54:10
我会尝试这些场景:
1.更正异常
是标准\SoapClient的$this->_client实例吗?如果没有,可能会抛出不同的异常,catch会忽略这些异常。如果你使用的是PHP 7.0或更高版本,请尝试捕获\Throwable,如果使用的是较旧版本,请尝试捕获\Exception。
2.在隔离中运行
如果问题仍然存在,最好将此函数从代码库中隔离出来,并尝试单独运行它。你甚至可以尝试像3v4l这样的在线工具。
Xdebug 3.Xdebug
如果仍然找不到原因,最好使用xdebug来跟踪问题。您可以在此处找到适用于Docker和PhpStorm的简单设置教程:https://medium.com/@pablofmorales/xdebug-with-docker-and-phpstorm-786da0d0fad2
https://stackoverflow.com/questions/51548311
复制相似问题