XMLRPC отлавливает ошибки выполнения скрипта и отображает их в ответе - PullRequest
1 голос
/ 10 мая 2011

Как я могу передать ошибки выполнения скрипта в ответ XMLRPC, чтобы я не получил исключение ошибки?

Может быть, я не правильно это настраиваю:

На сервере XMLRPCЯ добавляю Zend_XmlRpc_Server_Fault::attachFaultException('Exception'); вот так:

Zend_XmlRpc_Server_Fault::attachFaultException('Exception');
$server = new Zend_XmlRpc_Server();

Но я все еще получаю исключение ошибки:

Fault Exception:\n651Failed to parse response

Как передать ошибки выполнения скрипта в ответ?

Я также попытался установить это безуспешно:

error_reporting(E_ALL); 
ini_set("display_errors",1);
ini_set("xmlrpc_errors",1);

Документы: http://php.net/manual/en/errorfunc.configuration.php

Пример ошибки XMLRPC, когда в скрипте есть ошибки:

Fault Exception:\n651Failed to parse response

Пример, когда в скрипте есть ошибки:

Fatal error: Call to undefined method

Обе из одной и той же ошибки скрипта, но мне нужно, чтобы XMLRPC отображал в ответе сообщение о фатальной ошибке, а не выдавал ошибку при анализе.

1 Ответ

2 голосов
/ 16 мая 2011

Вы можете использовать функцию set_error_handler () , чтобы перехватить ошибку сценария и вместо этого выдать ErrorException :

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}

Поэтому, когда вы вызываете Zend_XmlRpc_Server :: handle ():

set_error_handler('exception_error_handler');
$server->handle();
restore_error_handler();

Редактировать: Пример # 1 со страницы ErrorException неверен. Вместо этого используйте версию в этом ответе.

...