Je travaille sur une grande base de code (héritée) en PHP, et l'erreur Exception thrown without a stack frame in Unknown on line 0
a commencé à apparaître au bas de chaque page. Je comprends ce que l'erreur signifie: une exception est jetée à un endroit où elle ne peut pas être lancée. J'ai même réussi à le localiser quelque peu - cela se produit pendant le temps où les fonctions d'arrêt sont appelées.Comment puis-je retrouver une "Exception lancée sans cadre de pile dans Unknown sur la ligne 0" en PHP?
J'ai mis la connexion dans toutes les fonctions qui sont enregistrées avec register_shutdown_function
, et il ne se passe dans aucun de ceux-ci. Malheureusement, je ne peux pas avoir plus d'informations que ça; Je sais ce que la dernière fonction d'arrêt à appeler avec succès est, mais je n'ai aucune idée de ce que le code est exécuté entre cela et le point où l'erreur se produit. Je ne sais même pas quelle partie de la machinerie PHP appelle cette dernière fonction d'arrêt. Ce peut être quelque chose avec le cadre de journalisation, ou le cadre de session, ou n'importe quoi d'une demi-douzaine de choses.
Est-ce que quelqu'un sait comment localiser l'erreur?
Est-ce que faire usage de code hérité des fonctions set_error_handler() ou set_exception_handler()? – Fosco
Je ne pense pas. La seule référence à cette fonction est dans une docstring, dans le framework Zend. –
PHP 5.3.6 corrige ce problème disons "un peu". Voir http://www.php.net/archive/2011.php#id2011-03-17-1 pour plus de détails. – eisberg