it-swarm.com.de

Zeigt alle Fehler und Warnungen an

PDATE 2:

Ich habe jetzt Folgendes aus der .php-Datei entfernt:

<?php error_reporting( E_ALL ); ?>

Ich habe display_erros in der php.ini wie folgt eingestellt:

display_errors = Ein

Die Fehlerberichterstattung wird in php.ini auf Folgendes festgelegt:

error_reporting = E_ALL | E_STRICT

Nach dem Neustart von Apache erhalte ich immer noch keine Fehler/Warnungen.

PDATE 1:

Ich habe error_reporting in php.ini geändert von:

error_reporting = E_ALL & ~ E_DEPRECATED

zu

error_reporting = E_ALL | E_STRICT

Nach dem Neustart von Apache, z.

/etc/init.d/Apache2 neu starten

Auf der Seite werden jedoch keine Fehler/Warnungen jeglicher Art angezeigt.

ORIGINAL FRAGE:

Das folgende Skript generiert eine Warnung, da sich $ err in der if-Anweisung befindet. Warum wird diese Warnung in einem Webbrowser nicht auf der Seite PHP angezeigt?

Ich muss in den Apache-Protokollen nachsehen, um die Warnung zu sehen. Wenn ich absichtlich "Einfügen in" in "Löschen in" ändere, wird auf der Seite PHP kein Fehler angezeigt. Warum werden die Fehler nicht auf der aktuellen Seite PHP angezeigt?

<?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>
386
oshirowanen

Anzeigefehler können in php.ini oder in Ihrer Apache-Konfigurationsdatei deaktiviert sein.

Sie können es im Skript aktivieren:

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

Sie sollten die gleichen Meldungen im Fehlerprotokoll PHP sehen.

1080
txyoji

Direkt aus der php.ini-Datei:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; This directive informs PHP of which errors, warnings and notices you would like
; it to take action for. The recommended way of setting values for this
; directive is through the use of the error level constants and bitwise
; operators. The error level constants are below here for convenience as well as
; some common settings and their meanings.
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
; those related to E_NOTICE and E_STRICT, which together cover best practices and
; recommended coding standards in PHP. For performance reasons, this is the
; recommend error reporting setting. Your production server shouldn't be wasting
; resources complaining about best practices and coding standards. That's what
; development servers and development settings are for.
; Note: The php.ini-development file has this setting as E_ALL. This
; means it pretty much reports everything which is exactly what you want during
; development and early testing.
;
; Error Level Constants:
; E_ALL             - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
; E_ERROR           - fatal run-time errors
; E_RECOVERABLE_ERROR  - almost fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it is automatically initialized to an
;                     empty string)
; E_STRICT          - run-time notices, enable to have PHP suggest changes
;                     to your code which will ensure the best interoperability
;                     and forward compatibility of your code
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
; E_DEPRECATED      - warn about code that will not work in future versions
;                     of PHP
; E_USER_DEPRECATED - user-generated deprecation warnings
;
; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Für die reine Entwicklung setze ich mich ein für:

error_reporting = E_ALL ^ E_NOTICE ^ E_WARNING

Vergessen Sie auch nicht, display_errors auf on zu setzen

display_errors = On

Starten Sie danach Ihren Server für Apache unter Ubuntu neu:

Sudo /etc/init.d/Apache2 restart
40
John Magnolia

Ich konnte alle Fehler über den folgenden Code erhalten:

ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
37
Rajesh Patel

PHP-Fehler können mit einer der folgenden Methoden angezeigt werden:

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

Für mehr Details:

Anzeigen von PHP Fehlern

28
vkp

Stellen Sie diese auf php.ini ein:

;display_startup_errors = On
display_startup_errors=off
display_errors =on
html_errors= on

Verwenden Sie auf Ihrer Seite PHP einen geeigneten Filter für die Fehlerberichterstattung.

error_reporting(E_ALL);

Ordner können je nach Bedarf angefertigt werden.

E_ALL
E_ALL | E_STRICT
9
rinjan

Sie können eine detaillierte Beschreibung sehen hier .

ini_set('display_errors', 1);

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

Änderungsprotokoll

  • 5.4.0 E_STRICT wurde Teil von E_ALL

  • 5.3.0 E_DEPRECATED und E_USER_DEPRECATED eingeführt.

  • 5.2.0 E_RECOVERABLE_ERROR eingeführt.

  • 5.0.0 E_STRICT eingeführt (nicht Teil von E_ALL).

3
Suresh Maurya