2010-10-19 7 views
3

J'essaie de changer la façon dont les fichiers d'erreur de system/application/errors fonctionnent en enregistrant les erreurs et en affichant une page 404 à la place. Cependant, parfois l'erreur se produit au milieu d'une page et je n'ai besoin d'afficher que la page d'erreur.Détecter si le contenu a été envoyé avant une ligne dans un fichier php dans codeigniter

J'ai essayé de vérifier si les en-têtes sont envoyés et de nettoyer le tampon de sortie, mais cela n'a pas fonctionné. Des suggestions?

Mise à jour: Ma question semble dérouter les gens alors je vais clarifier. Mon intention est d'afficher une page personnalisée de 500 dans le cas où une erreur se produirait quelque temps après l'envoi d'une partie du contenu et de consigner les conditions dans lesquelles l'erreur s'est produite afin qu'un utilisateur ne voit pas une page laide et un pirate. t voir les fuites. Le problème principal réside dans la suppression du contenu avant l'erreur.

Les stratégies qui ne fonctionnent pas jusqu'à présent:

  • vérification à l'aide ob_end_clean
  • $CI = & get_instance(); $CI->output->set_output('only the 500 message');
  • ajoutant une fonction _output($data) au contrôleur et seul le écho ing 500 message si un certain modèle trouvé dans les fichiers system/application/errors/*.php est trouvé

Toute aide est très appréciée.

+1

Pourquoi une erreur 404? Et pas un meilleur ajustement comme 500? – CodesInChaos

+0

vous avez raison, peut-être que je devrais changer cela. –

+0

quel genre d'erreurs attendez-vous? code direct ne devrait pas avoir d'erreurs où cela serait nécessaire imo. – Ross

Répondre

0

Sur ce défilement page vers le bas au 27 mai 2008. http://php.net/manual/en/function.header.php

Si les en-têtes ne sont pas envoyés, il fait un en-tête ('Location:'. $ Url); Sinon, il utilise du JavaScript pour rediriger. Si JavaScript est désactivé, il utilise une balise META.

+0

Je pense que vous devriez lire la question à nouveau. –

1

Êtes-vous à la recherche de pages d'erreur 404 personnalisées pour codeigniter?

http://maestric.com/doc/php/codeigniter_404

+0

désolé mais je ne pouvais rien trouver là-bas qui pourrait m'aider. Je veux détruire la sortie qui a été envoyée avant qu'une erreur se produise et montrer un 404 personnalisé ou comme CodeInChaos a suggéré une page 500. $ CI = & get_instance(); $ CI-> output-> set_output ('ma réponse personnalisée 500'); Sortie; ne fonctionne pas –

+0

Donc, vous voulez dire en réalité la gestion des erreurs? –

1

Voulez-vous dire changer la méthode par défaut que les erreurs CI sont traitées?

http://codeigniter.com/user_guide/general/errors.html

http://www.askaboutphp.com/172/codeigniter-handling-errors.html

Vérifiez ces deux guides sur le départ comment gérer les erreurs de CodeIgniter et PHP.

activer la journalisation d'erreur dans le fichier texte ou quelque chose, puis éteignez toutes les erreurs php (ce paramètre est réglé dans index.php) avec

error_reporting(E_ERROR); 

vous devez changer de E_ALL à E_ERROR pour afficher uniquement messages pour les problèmes d'exécution fatale. Cela masquera toutes les erreurs PHP sauf celles qui arrêteront l'exécution de votre script.

+0

Merci encore pour votre aide et votre patience. La modification du traitement des erreurs est utile, mais que se passera-t-il si quelqu'un parvient à produire une erreur quelque part au milieu d'une vue? Certains contenus seront envoyés et la partie contenant l'erreur ne sera pas envoyée, puis plus de contenu sera envoyé, ce qui entraînera une page gênante. Voici ce que je veux faire à la place: supprimer tout le contenu envoyé avant l'erreur, afficher ma réponse personnalisée 500 et quitter. –

+0

Que diriez-vous d'utiliser une redirection sur le message d'erreur? –

Questions connexes