it-swarm.com.de

Wie kann ich die Fehlermeldungen sehen, wenn ich den weißen Bildschirm des Todes erhalte?

Wie kann ich die Fehlermeldungen sehen, wenn die Site, an der ich arbeite, einen weißen Bildschirm erhält?

25
sokratis

Fügen Sie dies am Ende von settings.php ein:

error_reporting(-1);  // Have PHP complain about absolutely everything 
$conf['error_level'] = 2;  // Show all messages on your screen, 2 = ERROR_REPORTING_DISPLAY_ALL.
ini_set('display_errors', TRUE);  // These lines just give you content on WSOD pages.
ini_set('display_startup_errors', TRUE);
33
Mike

Der weiße Bildschirm des Todes (vollständig leere Seite) Die Ressource auf drupal.org führt Sie durch die Schritte, um die Fehlermeldung sowie häufig auftretende Probleme anzuzeigen.

"Unsichtbare" Fehler

Wenn die Fehlerberichterstattung deaktiviert ist, wird möglicherweise ein schwerwiegender Fehler angezeigt, der jedoch nicht angezeigt wird. An einem Produktionsstandort ist es üblich, dass die Fehlerberichterstattung deaktiviert ist. Wenn dies der Fall ist und PHP hat einen nicht behebbaren Fehler festgestellt, werden weder ein Fehler noch ein Inhalt angezeigt, sodass Sie eine vollständig leere Seite erhalten.

Was Sie dagegen tun können, ist entweder PHP Fehlerberichterstattung, damit eine Meldung auf der Seite selbst angezeigt wird, oder überprüfen Sie Ihre Protokolldateien (vom Server), um nach dem Fehler zu suchen Beides wird unten erklärt.

Aktivieren Sie die Fehlerberichterstattung

Obwohl es auf kommerziellen Hosts und Produktionsstandorten möglicherweise deaktiviert ist (aus gutem Grund, damit Benutzer die Fehler nicht sehen), sind diese Fehler eines Ihrer besten Tools zur Fehlerbehebung. Um die Fehlerberichterstattung zu aktivieren, bearbeiten Sie Ihre index.php-Datei (normalerweise in Ihrem Stammverzeichnis) vorübergehend direkt nach dem ersten Öffnen PHP Tag (bearbeiten Sie nicht die tatsächlichen Dateiinformationen!), Um Folgendes hinzuzufügen ::

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

Sie können jetzt alle Fehler sehen, die direkt auf dem Bildschirm auftreten. Speicherprobleme werden möglicherweise immer noch nicht angezeigt, aber dies ist der erste Schritt bei der Beseitigung.

Wenn Sie ein Setup mit mehreren Standorten verwenden und nur Fehler für einen Standort anzeigen möchten, überprüfen Sie zunächst den Namen des Hosts wie folgt:

if ($_SERVER['HTTP_Host']==='some.domain.name.here') {
  error_reporting(E_ALL);
  ini_set('display_errors', TRUE);
  ini_set('display_startup_errors', TRUE);
}

Wenn das Problem beim Ausführen von update.php auftritt, öffnen Sie update.php in einem Texteditor und kommentieren Sie die folgende Zeile aus:

ini_set('display_errors', FALSE);
17
iStryker

Schauen Sie sich das Apache-Fehlerprotokoll an. In Ubuntu befindet es sich in /var/log/Apache2/error.log damit du tun kannst:

tail -f /var/log/Apache2/error.log
10
tostinni

Ich habe eine einfache Möglichkeit gefunden, die WSOD-Fehler aufzuspüren, indem ich die gesamte Site über drush ausgeführt habe, z.

drush rs

Greifen Sie danach unter der angegebenen neuen Adresse (z. B. 127.0.0.1:8080) Auf die Site zu, und versuchen Sie dann, das Problem zu reproduzieren. Alle Fehler werden auf dem Terminalbildschirm angezeigt. Sie müssen Ihr PHP nicht neu konfigurieren, insbesondere in Fällen, in denen display_errors Fehlschlägt (z. B. MAMP).


Eine andere schwierige Art, wie ich es mithilfe von Debuggern gefunden habe, z.

  • OS X:

    Sudo dtruss -fn httpd 2>&1 | grep -i error
    
  • Linux:

    Sudo strace -f $(pgrep -fn httpd) 2>&1 | grep -i error
    

    Hinweis: Ändern Sie httpd in php, wenn Sie drush rs Wie oben verwenden.

Oder installieren Sie XDebug PHP und generieren Sie eine Trace-Datei (xdebug.auto_trace=1).

2
kenorb

Wenn Sie drush verwenden, werden Fehlermeldungen mit dem Befehl drush-ws angezeigt.

1
Manikandan

Sie können index.php ändern und den Code mit einem try/catch abschließen. So was:

try {
    define('DRUPAL_ROOT', getcwd());
    require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    menu_execute_active_handler();
} catch (Error $t) {
    error_log('Error at Line:' . $t->getLine() . ' File: ' . $t->getFile() . ' Message:' . $t->getMessage() );
    print '<div>Message: ' . $t->getMessage() . '</div>';
    print '<div>File:' . $t->getFile() . '</div>';
    print '<div>Line:' . $t->getLine() . '</div>';
}

Die Fehlermeldung zeigt die Datei und die Codezeile an, die den Fehler verursacht haben.

0
Trincer

Ich habe gerade den Wert der Variablen $ update_free_access von FALSE in TRUE geändert und die Datei update.php ausgeführt. Es hat mein Problem gelöst.

0
Saeed Afzal