我正在用ZF2构建应用程序。我使用Ajax在应用程序上发布一些数据,当我对此行进行新的例外时:
throw new Exception("Not Loged In.", 401);
问题是,每当我投掷新错误时,即使我将任何内容作为异常的第二个参数,它也会返回500。
任何人可以帮我吗?
谢谢!
从Zend Framework的请求生命周期的角度来看,每个未知的异常都是应用程序错误。您需要一种机制将该异常转换为有意义的HTTP响应,然后将其转换为您的HTTP 50X。
例如,在您的控制器中,您可以尝试以下类似:
try {
$this->myService->tryToDoSomethingThatNeedsAuthentication();
} catch(AuthRequiredException $e) {
$this->getResponse()->setStatusCode($e->getCode()) // Assuming its 401
->setReasonPhrase($e->getMessage());
return;
} catch(Exception) {
// handle other exceptions here
}
问题在您的PHP配置中。默认的Apache(或其他服务器)隐藏了内部错误的详细信息,因此返回简短信息:
错误500-内部服务器错误
您必须启用error_reporting:
在PHP中:
http://php.net/manual/pl/pl/function.error-reporting.php
或在apache配置中的php.ini中,在.htaccess文件中,这是可能的。对于开发人员的工作,您应该显示所有错误。