Mostrando todos los errores y advertencias [duplicado]

Resuelto oshirowanen asked hace 54 años • 6 respuestas

ACTUALIZACIÓN 2:

Ahora eliminé lo siguiente del archivo .php:

<?php error_reporting( E_ALL ); ?>

He configurado display_erros en php.ini de la siguiente manera:

display_errors = Activado

El informe de errores está configurado de la siguiente manera en php.ini:

informe_error = E_ALL | E_ESTRICT

Después de reiniciar Apache, sigo sin recibir errores ni advertencias.

ACTUALIZACIÓN 1:

He cambiado error_reporting desde php.ini:

error_reporting = E_ALL & ~E_DEPRECATED

a

informe_error = E_ALL | E_ESTRICT

Después de lo cual reinicié Apache, por ejemplo

/etc/init.d/apache2 reiniciar

Pero la página seguirá sin mostrar errores/advertencias de ningún tipo.

PREGUNTA ORIGINAL:

El siguiente script genera una advertencia porque $err está dentro de la declaración if. ¿Por qué no se muestra esta advertencia en la página PHP de un navegador web?

Tengo que mirar los registros de Apache para ver la advertencia. Además, si cambio deliberadamente "insertar en" por "eliminar en", no muestra un error en la página PHP. ¿Por qué los errores no se muestran en la página PHP real?

<?php
    error_reporting(E_ALL);
?>

<html>
    <head>
        <title></title>
        <link rel="icon" type="image/png" href="favicon.ico">

        <?php
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                $err = array();

                if (empty( $_POST['display_name']))
                    $err[] = "display name field is required";
                if (empty( $_POST['email']))
                    $err[] = "email field is required";
                if (empty( $_POST['password']))
                    $err[] = "password field is required";

                if (!$err) {
                    try {
                        $DBH = new PDO("mysql:host=localhost;dbname=database1", "user", "pass");
                        $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                        $STH = $DBH->prepare("delete into table1 (display_name, email, password) values ( :display_name, :email, :password )");

                        $STH->bindParam(':display_name', $_POST['display_name'], PDO::PARAM_STR, 100);
                        $STH->bindParam(':email', $_POST['email'], PDO::PARAM_STR, 100);
                        $STH->bindParam(':password', $_POST['password'], PDO::PARAM_STR, 100);

                        $STH->execute();

                        $STH = $DBH->prepare("delete into table2 ( username, status, users_id ) values ( :username, :status, :users_id )");

                        $strStatus = 1;

                        $STH->bindParam(':username', $_POST['display_name'], PDO::PARAM_STR, 100);
                        $STH->bindParam(':status', $strStatus, PDO::PARAM_INT, 1);
                        $STH->bindParam(':users_id', $_POST['referer'], PDO::PARAM_INT, 1);

                        $STH->execute();

                        $DBH = null;
                    }
                    catch (PDOException $e) {
                        echo $e->getMessage();
                    }

                    header("Location: " . $_SERVER['PHP_SELF']);
                    exit;
                }
                else {
                    foreach ($_POST as $key => $val) {
                        $form[$key] = htmlspecialchars($val);
                    }
                }
            }
            else {
                $form['display_name'] = $form['email'] = $form['password'] = '';
            }
        ?>
    </head>

    <body>
        <?php foreach($err as $line) { ?>
        <div style="error"><?php echo $line; ?></div>
        <?php } ?>

        <h1>Register</h1>

        <form method="post">
            Referers id:<br/>
            <input type="text" name="referer" /><br/><br/>

            Name:<br/>
            <input type="text" name="display_name" value="<?php echo $form['display_name']; ?>" /><br/><br/>

            Email:<br/>
            <input type="text" name="email" value="<?php echo $form['email']; ?>" /><br/><br/>

            Password:<br/>
            <input type="text" name="password" value="<?php echo $form['password']; ?>" /><br/><br/>

            <input type="submit" value="register" />
        </form>
    </body>
</html>
oshirowanen avatar Jan 01 '70 08:01 oshirowanen
Aceptado

Los errores de visualización se pueden desactivar en el php.iniarchivo de configuración de Apache.

Puedes activarlo en el script:

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

Deberías ver los mismos mensajes en el registro de errores de PHP.

txyoji avatar Mar 25 '2011 21:03 txyoji

Pude obtener todos los errores a través del siguiente código:

ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
Rajesh Patel avatar Jan 14 '2016 11:01 Rajesh Patel