问题
I need to give a 503 Service Unavailable HTTP header.
Normally I use these for 404 and 500 codes
throw new NotFoundException();
throw new InternalErrorException();
But I couldn't find relevant exception for 503 in CakePHP 2.2?
In my "app/lib/AppExceptionHandler.php" file I have this class/function that handles errors.
class AppExceptionHandler {
public static function handle($error) {
}
Edit:
Inside "app/Lib" folder I created a file named "MyExceptions.php". I wrote the following code inside this file:
class ServiceUnavailableException extends CakeException { protected $_messageTemplate = 'Service is not available now'; }
In "bootstrap.php" I wrote this:
App::uses('MyExceptions', 'Lib');
Then inside "MyNewController.php" file I wrote this:
throw new ServiceUnavailableException("just trying");
But then I get this error when I throw this exception:
Fatal error: Class 'ServiceUnavailableException' not found in
/var/www/vhosts/example.com/httpdocs/app/Controller/MyNewController.php
on line 3560
Warning (2): Cannot modify header information - headers already sent by
(output started at
/var/www/vhosts/example.com/httpdocs/app/Controller/MyNewController.php:3560)
[APP/Lib/AppExceptionHandler.php, line 19]
What do I miss? Thank you
回答1:
The Exceptions page in the Cake 2.0 book is worth a read.
Here's my short test:
// in bootstrap.php
require(APP . 'Lib' . DS . 'MyExceptions.php');
// in /Lib/MyExceptions.php
class ServiceUnavailableException extends CakeException {
protected $_messageTemplate = 'Test';
}
// in controller
throw new ServiceUnavailableException('Service unavailable', 503);
回答2:
http://api22.cakephp.org/class/cake-response#method-CakeResponsestatusCode
Will allow you to set a status code.
来源:https://stackoverflow.com/questions/13590614/throwing-a-custom-503-exception-in-cakephp-2