mensajes - mostrar errores php mysql




¿Cómo consigo errores de PHP para mostrar? (16)

He revisado mi archivo PHP ini y se muestran los errores de visualización y también el informe de errores es E_ALL . He reiniciado mi servidor web Apache.

Incluso he puesto estas líneas en la parte superior de mi script, y ni siquiera detecta errores simples de análisis. Por ejemplo, declaro variables con un "$" y no cierro sentencias ";" . Pero todos mis scripts muestran una página en blanco sobre estos errores, pero quiero ver realmente los errores en la salida de mi navegador.

error_reporting(E_ALL);
ini_set('display_errors', 1);

¿Que más queda por hacer?



Algunos proveedores de alojamiento web le permiten cambiar los parámetros de PHP en el archivo .htaccess .

Puedes añadir la siguiente línea:

php_value display_errors 1

Tuve el mismo problema que el tuyo y esta solución lo solucionó.


Como ahora estamos ejecutando PHP7, las respuestas aquí dadas ya no son correctas. El único que todavía está bien es el de Frank Forte, ya que habla sobre PHP7. Por otro lado, en lugar de intentar detectar un error con un try / catch, puedes usar un truco: use include. Aquí 3 piezas de código:

Archivo: tst1.php

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
// Missing " and ;
echo "Testing
?>  

Ejecutar esto en PHP7 no mostrará nada

Ahora, intente esto:

Archivo: tst2.php

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
include ("tst3.php");
?> 

Archivo: tst3.php

<?php
// Missing " and ;
echo "Testing
?>  

Ahora ejecute tst2 que establece el informe de errores y luego incluya tst3. Ya verás:

Error de análisis: error de sintaxis, final inesperado del archivo, variable esperada (T_VARIABLE) o $ {(T_DOLLAR_OPEN_CURLY_BRACES) o {$ (T_CURLY_OPEN) en tst3.php en la línea 4


Cree un archivo llamado php.ini en la carpeta donde reside su archivo PHP.

Dentro de php.ini agregue el siguiente código (estoy dando un error simple que muestra el código):

display_errors = on

display_startup_errors = on

Es posible que todas las configuraciones para "informes de errores" o "errores de visualización" no funcionen en PHP 7. Esto se debe a que el manejo de errores ha cambiado. Intenta esto en su lugar:

try{
     // Your code
} 
catch(Error $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

O, para detectar excepciones y errores de una sola vez (esto no es compatible con PHP 5):

try{
     // Your code
} 
catch(Throwable $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

Eso es lo que aprendí. En el archivo PHP.INI

error_reporting = E_ALL
display_errors = On

Este código en la parte superior debería funcionar error_reporting (E_ALL);

Sin embargo intente editar el código en el teléfono en el archivo

error_reporting = on


Esto funcionará:

<?php
     error_reporting(E_ALL);
     ini_set('display_errors', 1);    
?>

La solución mejor / fácil / rápida que puede usar si se trata de una depuración rápida, es rodear su código con excepciones de captura. Eso es lo que estoy haciendo cuando quiero comprobar algo rápido en la producción.

try {

//Page code

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

Espero que esto ayude.


No puede detectar errores de análisis al habilitar la salida de errores en el tiempo de ejecución, ya que analiza el archivo antes de ejecutar realmente cualquier cosa (y dado que encuentra un error durante esto, no ejecutará nada). Deberá cambiar la configuración real del servidor para que display_errors esté activado y se utilice el nivel de error_reporting adecuado. Si no tiene acceso a php.ini, puede usar .htaccess o similar, dependiendo del servidor.

Esta pregunta puede proporcionar información adicional.


Para mostrar todos los errores necesitas:

1. Tenga estas líneas en el script PHP al que está llamando desde el navegador (normalmente index.php ):

error_reporting(E_ALL);
ini_set('display_errors', '1');

2. (a) Asegúrese de que este script no tenga errores de sintaxis

-o-

2. (b) Establezca display_errors = On en su php.ini

De lo contrario, ni siquiera puede ejecutar esas 2 líneas!

Puede verificar los errores de sintaxis en su script ejecutando (en la línea de comandos):

php -l index.php

Si incluye el script de otro script PHP, se mostrarán los errores de sintaxis en el script incluido . Por ejemplo:

index.php

error_reporting(E_ALL);
ini_set('display_errors', '1');

// Any syntax errors here will result in a blank screen in the browser

include 'my_script.php';

my_script.php

adjfkj // This syntax error will be displayed in the browser

Puede agregar su propio controlador de errores personalizado, que puede proporcionar información de depuración adicional. Además puedes configurarlo para que te envíe por correo electrónico.

function ERR_HANDLER($errno ,$errstr, $errfile, $errline){
    $msg="<b>Someting bad happened.</b> [$errno] $errstr <br><br>
    <b>File:</b> $errfile <br>
    <b>Line:</b> $errline <br>
    <pre>".json_encode(debug_backtrace(), JSON_PRETTY_PRINT)."</pre> <br>";

    echo $msg;

    return false;
}

function EXC_HANDLER($exception){
    ERR_HANDLER(0,$exception->getMessage(),$exception->getFile(),$exception->getLine());
}

function shutDownFunction() {
    $error = error_get_last();
    if ($error["type"] == 1) {
        ERR_HANDLER($error["type"],$error["message"],$error["file"],$error["line"]);
    }
}

set_error_handler ("ERR_HANDLER", E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
register_shutdown_function("shutdownFunction");
set_exception_handler("EXC_HANDLER");

Si de alguna manera se encuentra en una situación en la que no puede modificar la configuración a través de php.ini o .htaccess no tiene suerte de mostrar errores cuando sus scripts PHP contienen errores de análisis. Entonces deberías resolver la alineación de los archivos en la línea de comandos de esta manera:

find . -name '*.php' -type f -print0 | xargs -0 -n1 -P8 php -l | grep -v "No syntax errors"

Si su host está tan bloqueado que no permite cambiar el valor a través de php.ini o .htaccess , también puede rechazar el cambio del valor a través de ini_set . Puedes comprobarlo con el siguiente script PHP:

<?php
if( !ini_set( 'display_errors', 1 ) ) {
  echo "display_errors cannot be set.";
} else {
  echo "changing display_errors via script is possible.";
}

Si tiene instalado xdebug, puede anular cada configuración configurando:

xdebug.force_display_errors = 1;
xdebug.force_error_reporting = -1;

force_display_errors

Escriba: int, Valor predeterminado: 0, Introducido en Xdebug> = 2.3 Si esta configuración se establece en 1, siempre se mostrarán los errores, independientemente de la configuración de display_errors de PHP.

force_error_reporting

Escriba: int, Valor predeterminado: 0, Introducido en Xdebug> = 2.3 Esta configuración es una máscara de bits, como error_reporting. Esta máscara de bits se ORIFICARÁ lógicamente con la máscara de bits representada por error_reporting para determinar qué errores deben mostrarse. Esta configuración solo se puede realizar en php.ini y le permite forzar que se muestren ciertos errores sin importar lo que una aplicación haga con ini_set ().


Solo escribe:

error_reporting(-1);

Utilizar:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Esta es la mejor manera de escribirlo, pero un error de sintaxis da un resultado en blanco, así que use la consola para verificar los errores de sintaxis. La mejor manera de depurar el código PHP es usar la consola; Ejecuta lo siguiente:

php -l phpfilename.php




error-reporting