2015-09-25 1 views
0

En PHP est-il possible de changer le HTML de la page blanche de la mort (WPOD)? L'objectif est d'effectuer cette modification afin que toutes les erreurs fatales non testées (non prévenues avec un if-else) affichent cette page personnalisée.PHP: Changer le HTML de la page blanche de la mort (WPOD)

Par exemple lors de l'exécution de la suivante renverrait une WPOD nécessaire lorsque le dépôt n'existe pas:

require 'some-non-existing-file.php'; 

Mais je voudrais revenir:

<!doctype html> 
<html> 
<head> 
    <title>500</title> 
    <style>body { background-color: #000; }</style> 
</head> 
<body></body> 
</html> 

J'ai essayé d'installer mon <VirtualHost> à inclure et ErrorDocument directive:

ErrorDocument 500 /500.html 

B ut selon this answer, après Apache commence à traiter le PHP, il ne déclenchera plus un document d'erreur Apache.

+0

Utilisez Nginx, et vous pouvez le faire facilement. – Brad

+0

Je ne suis pas sûr que vous pouvez utiliser un document d'erreur personnalisé pour une erreur de 500 – RamRaider

+1

@RamRaider Bien sûr, vous pouvez. http://httpd.apache.org/docs/2.2/custom-error.html – Brad

Répondre

2

Vous pouvez vérifier l'erreur en utilisant error handler

function checkErrorOnPage(){ 
    header("Location: 500.html"); 
} 
set_error_handler('checkErrorOnPage'); 


require 'some-non-existing-file.php'; 
2

Ceci n'affecte pas le WSOD, mais vous pourriez faire un peu de manipulation d'erreur avec votre code PHP qui va au-delà des instructions if/else.

Si vous avez du code que vous pensez pourrait poser des problèmes, l'envelopper dans un bloc try/catch comme ceci:

try { 
    echo inverse(5) . "\n"; 
    echo inverse(0) . "\n"; 
} catch (Exception $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 

Ensuite, dans le bloc catch, vous pouvez imprimer l'exception qui est levée par le code.

http://php.net/manual/en/language.exceptions.php

+0

Malheureusement, PHP aime les erreurs en faveur des exceptions – grim

+2

@grim Je pense que cela devrait changer avec PHP 7. Le changelog inclut le bit suivant: "De nombreuses erreurs fatales sont maintenant des exceptions" – georaldc

+0

@georaldc – grim