ZF2 PHP Exception



我正在用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文件中,这是可能的。对于开发人员的工作,您应该显示所有错误。

相关内容

最新更新