A continuación se muestra un ejemplo del mensaje de error del tiempo de ejecución de PHP 7:
Error fatal de PHP: error no detectado: clase 'Predis\Connection\ConnectionException' no encontrada en predis.php:4168
Seguimiento de la pila:
#0 /var/www/api/libraries/predis/predis.php(4455): Predis\Connection\AbstractConnection->onConnectionError('Error al rea...')
Tenga en cuenta los puntos suspensivos en la primera línea de seguimiento de la pila marcada como #0:
('Error al rea...')
Ahí es donde habría estado la información más importante, si no hubiera sido cortada. Otros mensajes de error tienen el mismo problema, a menudo cortando partes muy valiosas del mensaje.
¿Hay alguna configuración que podamos usar para imprimir más información en los seguimientos de pila? La versión exacta de PHP que estamos usando es 7.1.1.
Actualizar El problema exacto que estamos teniendo se describe en ¿Cómo deshabilitar PHP cortando partes de argumentos largos en el seguimiento de la pila de excepciones? . Esta pregunta se puede cerrar como un tonto. La idea es capturar la excepción, llamar a Exception::getTrace() y construir el mensaje de error manualmente. La excepción se puede capturar en el manejador global o en cada bloque try/catch. La implementación predeterminada de Exception::getTraceAsString trunca los argumentos de función largos.
Si envuelve las llamadas que pueden fallar en un bloque try { ... } catch (Exception $e) { ... } , puede mostrar tantos mensajes de error de excepción como desee.
También podrá controlar lo que hace el código con el error o ayudar a evitar mejor el problema en el futuro.
El depurador instalado maneja la salida de error generada para los mensajes de excepción. El valor predeterminado que viene con PHP no es tan informativo y no puede personalizar esa salida.
Puede adjuntar su propio controlador de errores e imprimir sus propios seguimientos de pila, o puede cambiar el depurador instalado en PHP.
Si instala el depurador xDebug o Zend, obtendrá más información en el seguimiento de la pila.
Puede usar getTraceAsString();
<?php function test() { throw new Exception; } try { test(); } catch(Exception $e) { echo $e->getTraceAsString(); } ?>