我正在与PHP中的错误检测作斗争......
我有一个简单的函数,它使用SoapClient从我的另一台服务器获取数据。相关部分是:
$options = array(
'uri' => 'https://www.php-web-host.com',
'location' => 'https://www.php-web-host.com/API/Country.php',
'trace' => 1);
$client = new SoapClient(NULL, $options);
$CountryCode = strtolower($client->GetCountryCode($_SERVER["REMOTE_ADDR"]));
我目前遇到的问题是,如果运行此代码的服务器没有安装SOAP,那么我会收到500服务器错误(我没有检查过,但我猜测到了实际的PHP问题是致命的例外吗?)
我尝试在try / catch块中包装上面的内容,但显然它不会抛出异常。我也尝试过set_error_handler等,但是我无法“抓住”这个错误。
我需要捕获它(而不是仅仅安装SOAP)的原因是它的代码将被广泛分发,所以我需要能够在连接之前以某种方式检查肥皂...
非常感谢任何帮助...
约翰
答案 0 :(得分:0)
好的,所以我设法通过在How do I catch a PHP Fatal Error使用periklis示例来解决我的问题。
该示例使用register_shutdown_function,该页面在页面终止时(正确或由于错误)被调用。
register_shutdown_function('shutdownFunction');
function shutdownFunction()
{
$error = error_get_last();
// check if this error was related to my code, if not, ignore it
if ( ($error['type'] == 1) && (strstr(strtolower($error['message']), 'soapclient') ) )
{
print "<h1 style=\"color:red;\">ERROR!</h1>Your server does not appear to have SOAP installed. SOAP is required for this functionaliy";
exit();
}
}
这似乎对我有用......幸福!