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?
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 include
ing 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.
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
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.
Schreiben Sie einfach folgenden Code über die Datei PHP:
ini_set('display_errors','on');
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.
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
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.