Si j'inclus un fichier à PHP. S'il y a une erreur fatale dans ce PHP, il y a alors un moyen de sauter cela.
<?php include "somefile.php"; echo "OK"; // Is there any way to print this OK If there is any fatal error on somefile.php ?>
8 Réponses :
fatal signifie fatal ... Il n'y a aucun moyen de récupérer d'une erreur fatale. p>
edit: j'ai raté le mot fatal. strong> Comme indiqué, vous ne pouvez pas récupérer d'une erreur fatale. S'il ne s'agit que d'une exception, la réponse d'écrit précipité ci-dessous fonctionnera. Y compris un autre module PHP est identique à ce que le code inséré est inséré en ligne, de sorte qu'un simple try-attrape code> doit fonctionner: p>
Ne fonctionnera pas pour des erreurs fatales ... seulement des exceptions et il n'ya aucun moyen de faire une exception sur une erreur fatale.
Oui, je devais avoir brouillé sur ça. Ces commentaires sont corrects.
php ne tolérera pas avec des erreurs fatales. Il est préférable de vérifier le fichier fourni et de le résoudre. En fait, vous pouvez essayer de regarder enregistrer-la fonction , Mais il n'est pas recommandé de fuir vos problèmes. P>
Erreur fatale signifie qu'il y a quelque chose de sérieusement mal avec le code y compris. Comme @OrangePill a dit qu'il n'y a aucun moyen d'arrêter ce message d'erreur fatal. Veuillez passer par votre codage et trouver l'erreur. P>
Vous pouvez utiliser register_shutdown_function .
<?php function echoOk() { echo "OK"; } register_shutdown_function(function () { $error = error_get_last(); // to make sure that there is any fatal error if (isset($error) && ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR || $error['type'] == E_CORE_ERROR)) { echoOk(); } }); include "somefile.php"; echoOk();
Avec cela, vous pouvez définir votre propre fonction de continuation qui prendra le relu en cas d'erreur fatale. Ceci utilise register_shutdown_function () code>
à intercepter l'erreur fatale.
Utilisation: P>
function include_try($cont_func, $cont_param_arr, $output = false) { // Setup shutdown function: static $run = 0; if($run++ === 0) register_shutdown_function('include_shutdown_handler'); // If output is not allowed, capture it: if(!$output) ob_start(); // Reset error_get_last(): @user_error('error_get_last mark'); // Enable shutdown handler and store parameters: $params = array($cont_func, $cont_param_arr, $output, getcwd()) $GLOBALS['_include_shutdown_handler'] = $params; } function include_catch() { $error_get_last = error_get_last(); $output = $GLOBALS['_include_shutdown_handler'][2]; // Disable shutdown handler: $GLOBALS['_include_shutdown_handler'] = NULL; // Check unauthorized outputs or if an error occured: return ($output ? false : ob_get_clean() !== '') || $error_get_last['message'] !== 'error_get_last mark'; } function include_shutdown_handler() { $func = $GLOBALS['_include_shutdown_handler']; if($func !== NULL) { // Cleanup: include_catch(); // Fix potentially wrong working directory: chdir($func[3]); // Call continuation function: call_user_func_array($func[0], $func[1]); } }
Oui, il y a. Il peut être fait à travers une simple déclaration si
vous avez: p> Essayez ceci: p> <?php
if(include "somefile.php"){
// echo do something if success
}else{
echo "OK";
}
Cela ne fonctionne pas si quelquefile.php contient Php $ str = ' code> (fichier de cache écrit partiel).
J'ai besoin d'inclure ce fichier parfois qu'il peut renvoyer une erreur fatale pour certains hôtes.
Utilisez le
exiger code> au lieu d'inclure.
"Cela peut renvoyer une erreur fatale pour certains hôtes" - quel genre de fatal? Pourquoi exactement cela se produit?
PS: Y a-t-il une chance d'utiliser
fichier php -l.php code> à la place?