2017-05-02 3 views
1

wirft Ich benötige Funktionen verwenden, wie folgend:php require 503 Statuscode

<?php 
    require("../require/head.php"); 
    require("../require/header.php"); 
    require("content.php"); 
    require("../require/footer.php"); 
?> 

Ist es möglich, 503 Code zu werfen, wenn ein nicht erforderlich sein Ziel finden und wie? Ist es auch möglich, normale Ausnahme zu werfen, wo ich 503 Fehler nicht möchte und wie?

+1

Ich denke, dies mit PHP wird nicht einfach sein, weil http://stackoverflow.com/questions/5369488/try-catch-cannot-work-with-require-once-in-php –

+0

Mit könnten versuchen, stattdessen einschließen und einen 503-Header senden, wenn das Einschließen fehlschlägt. –

Antwort

1

Da der HTTP-Server-Antwortcode in den Headern gesendet wird, müssen Sie diese vor dem Senden von Nutzdaten an den Client festlegen.

So können Sie entweder die Ausgabepufferung oder die erste Schleife über die erforderlichen Dateien verwenden, um die Lesbarkeit zu überprüfen, und dann http_response_code verwenden, um 503 zu senden, wenn eine der Ressourcen fehlt.

<?php 

$files = [ 
    "../require/head.php", 
    "../require/header.php", 
    "content.php", 
    "../require/footer.php", 
]; 

foreach ($files as $file) { 
    if (!is_readable($file)) { 
     // return 503 
     http_response_code(503); 
     die(); 

     // or you could throw an exception 
     throw new Exception("Missing file: $file"); 
    } 
} 

foreach ($files as $file) { 
    require $file; 
}