0

Я боролся с обнаружением ошибок в PHP ...Проверьте SoapClient существуют

У меня есть простая функция, которая использует 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 ошибки сервера (я приют а» t проверено, но я предполагаю, что фактическая проблема с PHP является фатальным исключением?)

Я пробовал обернуть выше в блоках try/catch, но, по-видимому, это не исключение. Я также попробовал set_error_handler и т. Д., Но я не могу «поймать» эту ошибку.

Причина мне нужно, чтобы поймать его (в отличие от простой установки SOAP) является то, что его код, который будет широко распространен, так что мне нужно, чтобы иметь возможность как-то проверить для мыла перед подключением ...

Любая помощь очень ценится ...

Джон

ответ

0

ОК, так что мне удалось решить мою проблему, используя пример Periklis на How do I catch a PHP Fatal Error.

В этом примере используется функция 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(); 
    } 

} 

Это похоже на работу для меня ... Счастье!