it-swarm.com.de

Wie zu haben PHP Fehler anzeigen? (Ich habe ini_set und error_reporting hinzugefügt, gibt aber nur 500 Fehler an)

Ich habe also eigentlich keine Fehler in meiner aktuellen Webseite, aber ich möchte einen Fehler sehen, wenn sie auftauchen, anstatt der HTTP 500-Fehlerseite. Ich googelte ein wenig herum und dachte, dass das Hinzufügen dieser zwei Zeilen alles reparieren würde.

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

HINWEIS: Ich habe keinen Zugriff auf die Datei php.ini, da ich den Server meines Schulkontos verwende.

Also habe ich einen Fehler (kein Semikolon nach $ buggy) am oberen Rand meiner Seite eingeführt: 

<?php 
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$buggy

$x = 4 + 2;
...

Ich bekomme jedoch nur einen Serverfehler:

Msgstr "Die Website hat beim Abrufen von http://mywebpage.com/ einen Fehler festgestellt. Möglicherweise ist die Wartung fehlgeschlagen oder falsch konfiguriert."

Irgendwelche Ideen?

BEARBEITEN:

Ich habe meinen Code neu konfiguriert:

<?php 
include_once 'database/errorSettings.php';
?>
<?php 

$buggy // whoops
$x = 4 + 2;
...

errorSettings.php lautet wie folgt:

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

Aber es funktioniert immer noch nicht ... falsche Art und Weise neu zu konfigurieren?

32
user114518

Was Sie haben, ist ein Parser-Fehler. Diese werden geworfen, bevor ein Code ausgeführt wird. Eine PHP -Datei muss vollständig analysiert werden, bevor Code ausgeführt werden kann. Wenn in der Datei, in der Sie Ihre Fehlerstufen einstellen, ein Parser-Fehler angezeigt wird, sind diese zum Zeitpunkt des Fehlerfalls nicht wirksam.

Teilen Sie Ihre Dateien entweder in kleinere Teile auf, z. B. das Festlegen der Fehlerstufen in einer Datei und dann includeing einer anderen Datei, die den eigentlichen Code (und die Fehler) enthält, oder legen Sie die Fehlerstufen außerhalb von PHP mit php.ini oder .htaccess fest richtlinien.

13
deceze

Sie müssen den Wert für error_reporting in einer .htaccess-Datei festlegen. Da es einen Parser-Fehler gibt, wird niemals die Funktion error_reporting () in Ihrem PHP -Code ausgeführt.

Versuchen Sie dies in einer .htaccess-Datei (vorausgesetzt, Sie können eine verwenden):

php_flag display_errors 1
php_value error_reporting 30719

Ich denke, 30719 entspricht E_ALL, aber ich kann mich irren.

Edit Update:http://php.net/manual/de/errorfunc.constants.php

int error_reporting ([ int $level ] )
---
32767   E_ALL (integer)     
All errors and warnings, as supported, except of   level E_STRICT prior to PHP 5.4.0.   32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP   5.2.x, 2047 previously
12
Nick Clark

Hinzu kommt das, was Betrug oben gesagt hat. Dies ist ein Parser-Fehler. Erstellen Sie zum Debuggen eines Parser-Fehlers eine neue Datei mit dem Namen debugSyntax.php im Stammverzeichnis. Setze dies hinein:

<?php

///////    SYNTAX ERROR CHECK    ////////////
error_reporting(E_ALL);
ini_set('display_errors','On');

//replace "pageToTest.php" with the file path that you want to test. 
include('pageToTest.php'); 

?>

Führen Sie die debugSyntax.php-Seite aus, und es werden Analysefehler auf der Seite angezeigt, die Sie zum Testen ausgewählt haben.

5
Matt

Schreiben Sie einfach folgenden Code über die Datei PHP:

ini_set('display_errors','on');
2
Mehul V.

Für Leute, die Codeigniter verwenden (ich bin auf C3):

Die Datei index.php überschreibt die Konfiguration von php.ini, also in der Datei index.php, Zeile 68:

case 'development':
        error_reporting(-1);
        ini_set('display_errors', 1);
    break;

Sie können diese Option ändern, um festzulegen, was Sie benötigen. Hier ist die komplette Liste:

1   E_ERROR
2   E_WARNING
4   E_PARSE
8   E_NOTICE
16  E_CORE_ERROR
32  E_CORE_WARNING
64  E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024    E_USER_NOTICE
6143    E_ALL
2048    E_STRICT
4096    E_RECOVERABLE_ERROR

Ich hoffe es hilft.

0

Syntaxfehler werden in externen Servern nicht einfach überprüft, sondern nur Laufzeitfehler. 

Was ich mache? Genau wie du, ich benutze 

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

Vor dem Start überprüfe ich jedoch Syntaxfehler in einer PHP -Datei mit einer Online-Syntax PHP. 

Das beste, IMHO ist PHP Code Checker

Ich kopiere den gesamten Quellcode, füge ihn in das Hauptfeld ein und klicke auf die Schaltfläche Analyze

Es ist nicht die praktischste Methode, aber die beiden Verfahren ergänzen sich und lösen das Problem vollständig

0
Paulo Buchsbaum

Dieses Problem hatte ich bei der Verwendung von PHP5.4 und Plesk 11.5

Irgendwie haben die Einstellungen für Fehlerberichte und Anzeigefehler auf der Plesk-Domänen-Konfigurationsseite alle lokalen Einstellungen in .htaccess oder den PHP -Skripts vollständig überschrieben. Ich habe keine Möglichkeit gefunden, dies zu verhindern. Verwenden Sie die Plesk-Einstellungen, um die Fehlerberichterstattung ein- und auszuschalten.

Möglicherweise haben Sie in Ihrer php.ini Einstellungen, die verhindern, dass die lokale Site diese Einstellungen überschreibt, die möglicherweise durch das auf Ihrem Server verwendete Kontrollfeld erzwungen werden.

0
Jason