wake-up-neo.net

PHP Fehler werden nicht angezeigt, obwohl display_errors = On ist

Ich habe einen Ubuntu-Server, auf dem Apache2 mit PHP ausgeführt wird. 5. In der php.ini setze ich error_reporting = E_ALL | E_STRICT und error_reporting = E_ALL | E_STRICT, aber PHP zeigt immer noch keine Fehlermeldungen an. Ich verwende auch virtuelle Apache-Hosts.

Was ist auch das strengste Fehlerreporting, das PHP5.3 zu bieten hat? Ich möchte, dass mein Code so aktuell und zukunftssicher wie möglich ist.

38
wowpatrick

Sie müssen auch sicherstellen, dass Ihre php.ini-Datei den folgenden Satz enthält. Andernfalls werden Fehler nur in dem Protokoll angezeigt, das standardmäßig festgelegt oder in der Konfiguration des virtuellen Hosts angegeben ist.

display_errors = On

Die php.ini-Datei enthält die Grundeinstellungen für alle PHP auf Ihrem Server. Diese können jedoch leicht überschrieben und an jeder beliebigen Stelle im PHP -Code geändert werden. Auf diese Änderungen kann dann alles angewendet werden. Eine gute Prüfung ist, die display_errors-Direktive zu Ihrer php.ini-Datei hinzuzufügen. Wenn Sie keinen Fehler sehen, der aber protokolliert wird, fügen Sie diesen am Anfang der Datei ein, die den Fehler verursacht hat:

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

Wenn dies funktioniert, wird die Fehleranzeige durch etwas früheres in Ihrem Code deaktiviert.

73
Ray

Ich hatte das gleiche Problem und löste es schließlich. Mein Fehler war, dass ich versucht habe, /etc/php5/cli/php.ini zu ändern, aber dann fand ich eine andere php.ini hier: /etc/php5/Apache2/php.ini , geänderte display_errors = Ein, der Webserver wurde neu gestartet und es hat funktioniert!

Vielleicht wäre es hilfreich für jemanden, der so abwesend ist wie ich.

12
vk23

Ich hatte das gleiche Problem auf meinem virtuellen Server mit Parallels Plesk Panel 10.4.4. Die Lösung bestand darin (danke Zappa für die Idee), den Wert error_reporting auf 32767 anstatt auf E_ALL ..__ einzustellen. In Plesk: Start> Abonnements> (Domäne auswählen)> Anpassen> PHP Einstellungen> error_reporting - Enter benutzerdefinierter Wert - 32767

7
Bartek Kosa

Obwohl dies ein alter Beitrag ist, gab es eine ähnliche Situation, die mir Kopfschmerzen bereitete. Schließlich stellte ich fest, dass ich Unterseiten in index.php mit "@include ..." "@" Einfügte. "@" Verbirgt alle Fehler, auch wenn display_errors eingeschaltet ist

3
Tomek

Wenn Sie die Konfiguration in der Datei php.ini aktualisieren, müssen Sie möglicherweise Apache neu starten. Versuchen Sie, apachectl restart oder Apache2ctl restart oder ähnliches auszuführen.

Stellen Sie in Ihrer Ini-Datei außerdem sicher, dass Sie display_errors = on haben, jedoch nur in einer Entwicklungsumgebung, niemals in einer Produktionsmaschine.

Die strengste Fehlerberichterstattung ist genau das, was Sie zitiert haben: E_ALL | E_STRICT. Weitere Informationen zu den Fehlerstufen finden Sie unter the php docs .

2
user456814

Ich möchte hier nur eine weitere Fallstricke hinzufügen, falls jemand diese Frage mit einem ähnlichen Problem wie meiner findet.

Wenn Sie Chrome (oder Chromium) verwenden und PHP einen Fehler in PHP - Code auslöst, der sich innerhalb eines HTML-Attributs befindet, entfernt Chrome das gesamte HTML-Element, sodass PHP Fehler in Ihrem Browser.

Hier ist ein Beispiel:

<p>
  <a href="<?=missingFunc()?>">test</a>
</p>

Beim Aufruf dieses Codes in Chrome erhalten Sie nur ein HTML-Dokument mit dem <p>-Starttag. Der Rest fehlt. Keine Fehlermeldung und kein anderer HTML-Code nach diesem <p>. Dies ist nicht ein PHP - Problem. Wenn Sie diese Seite in Firefox öffnen, wird die Fehlermeldung angezeigt (Beim Anzeigen des HTML-Codes). Das ist also ein Chrome-Problem. 

Weiß nicht, ob es irgendwo einen Workaround gibt. In diesem Fall müssen Sie die Seite in Firefox testen oder das Apache-Fehlerprotokoll überprüfen.

1
kayahr

Ich hatte das gleiche Problem, aber ich habe ini_set('display_errors', '1'); innerhalb des fehlerhaften Skripts selbst verwendet, damit es niemals bei fatalen/Syntaxfehlern ausgelöst wird. Schließlich löste ich es, indem ich Folgendes in meinen .htaccess hinzufügte:

php_value auto_prepend_file /usr/www/{YOUR_PATH}/display_errors.php

display_errors.php:

<?php
ini_set('display_errors', 1);
error_reporting(-1);
?>

Dadurch war ich nicht gezwungen, den php.ini zu ändern, für bestimmte Unterordner zu verwenden und konnte ihn leicht wieder deaktivieren.

1
mgutt

Überprüfen Sie das Flag error_reporting, muss E_ALL sein. In einigen Versionen von Plesk sind jedoch Anführungszeichen ("E_ALL") anstelle von (E_ALL)

Ich habe dieses Problem gelöst die Anführungszeichen gelöscht (") in php.ini 

davon:

error_reporting = "E_ALL"

zu diesem:

error_reporting = E_ALL
1
fremsoft

Dieser Thread ist zwar alt, aber immer noch, ich denke, ich sollte eine gute Antwort aus dieser Stackoverflow-Antwort veröffentlichen.

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

Das hat mich sicher gerettet, nachdem ich stundenlang versucht hatte, Dinge zum Laufen zu bringen. Ich hoffe das hilft jemandem.

0
mikaelovi

Ich weiß, dass dieser Thread alt ist, aber ich habe gerade ein ähnliches Problem mit meinem Ubuntu-Server gelöst und dachte, ich würde hier einen Hinweis hinzufügen, um anderen zu helfen, da dieser Thread die erste Seite in Google war, bei der das Thema PHP keine Fehler anzeigt.

Ich habe mehrere Konfigurationseinstellungen für den Wert error_reporting in php.ini ausprobiert. Von E_ALL | E_STRICT zu E_ALL & E_NOTICE und keiner hat funktioniert. Im Browser wurden keine Syntaxfehler angezeigt (was auf einem Entwicklungsserver ziemlich ärgerlich ist). Nachdem Sie die Einstellung error_reporting auf "E_ALL" geändert hatten, begann alles zu funktionieren. Nicht sicher, ob es sich um ein spezifisches Problem mit Ubuntu Oneric handelt, aber nach dem Neustart von Apache-Fehlern wurden auf den HTML-Seiten der Server angezeigt. Die zusätzlichen Optionen scheinen verwirrend zu sein und alle Fehlermeldungen werden angehalten. HTH jemand anderes.

0
Zappa

Ich habe gerade das gleiche Problem erfahren und es stellte sich heraus, dass mein Problem nicht in den php.ini-Dateien lag, sondern einfach, dass ich den Apache-Server als normalen Benutzer startete. Sobald ich einen "Sudo /etc/init.d/Apache2-Neustart" durchführte, wurden meine Fehler angezeigt. 

0

Ich bin auch auf das Problem gestoßen. Endlich habe ich die Lösung gefunden. Ich verwende UBUNTU 16.04 LTS.

1) Öffnen Sie die /ect/php/7.0/Apache2/php.ini-Datei (unter dem /etc/php hat man möglicherweise eine andere Version von PHP, aber Apache2/php.ini befindet sich unter der Versionsdatei), suchen Sie den Abschnitt ERROR HANDLING AND LOGGING und setzen Sie den folgenden Wert {display_error = On, error_reporting = E_ALL}.

HINWEIS - Unter QUICK REFERENCE finden Sie auch diese Werte-Direktiven, ändern Sie diese jedoch nicht, sondern ändern Sie sie nur in Abschnitt I, den Sie mir mitgeteilt haben.

2) Apache Server Sudo systemctl restart Apache2 neu starten

0
mswd745

Ich hatte das gleiche Problem mit Apache und PHP 5.5 ..__ In php.ini hatte ich folgende Zeilen:

error_reporting E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errors Off

statt der folgenden:

error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errors=Off

(das =sign fehlte)

0
hiszpan

Bei der Ausführung von PHP unter Windows mit ISS müssen in ISS einige Konfigurationseinstellungen festgelegt werden, die die Anzeige allgemeiner Standard-Seiten verhindern sollen.

1) Doppelklicken Sie auf FastCGISettings, klicken Sie auf PHP und dann auf Edit. Setzen Sie StandardErrorMode auf ReturnStdErrLn500.

StandardErrorMode

2) Gehen Sie zur Website, doppelklicken Sie auf die Fehlerseiten, klicken Sie auf den Status 500, klicken Sie auf Featureeinstellungen bearbeiten, Fehlerantworten für detaillierte Fehler ändern, und klicken Sie auf OK

Fehlerantworten auf detaillierte Fehler ändern

0
naw103

Stellen Sie sicher, dass sich die von Ihnen modifizierte php.ini im Ordner/etc/php5/Apache2 befindet.

0
Johnz