Aktivieren der Fehleranzeige in PHP nur über htaccess


112

Ich teste eine Website online.

Im Moment werden die Fehler nicht angezeigt (aber ich weiß, dass sie existieren).

Ich habe nur Zugriff auf die .htaccessDatei.

Wie mache ich alle Fehler, um sie mit meiner .htaccessDatei anzuzeigen ?


Ich habe diese Zeilen zu meiner .htaccessDatei hinzugefügt :

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

Und die Seiten zeigen jetzt :

Interner Serverfehler


Ich habe ein bisschen gegoogelt und ein paar Flaggen zu meinem htaccess hinzugefügt. und meine Seiten können nicht wieder angezeigt werden
Ogugua Belonwu

3
Anscheinend haben Sie nicht die Rechte, diese Einstellungen von htaccess aus zu überschreiben. Möglicherweise müssen Sie AllowOverride Allin der Apache-Konfiguration festlegen , ob Sie Zugriff darauf haben.
Kapa

Überprüfen Sie Ihr Apache-Fehlerprotokoll. Es muss genau angegeben werden, warum Sie den internen Fehler 500 erhalten. Was Sie im Browser sehen, ist von Natur aus für Diagnosezwecke unbrauchbar.
Marc B

Antworten:


189

.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

14
Ich habe diese Zeilen zu meinem htaccess hinzugefügt: php_flag display_startup_errors auf php_flag display_errors auf php_flag html_errors auf und die Seiten zeigen internen
Serverfehler

4
Wenn Sie PHP als Apache-Modul verwenden, können Sie die Konfigurationseinstellungen auch mithilfe von Anweisungen in Apache-Konfigurationsdateien (z. B. httpd.conf) und .htaccess-Dateien ändern. Dazu benötigen Sie die Berechtigungen "AllowOverride Options" oder "AllowOverride All". php.net/manual/en/configuration.changes.php
silex

Erstellen Sie das PHP_errors.log und machen Sie es 777 auf andere Weise. Sie werden die von Apache erstellte und gefüllte Datei wahrscheinlich nicht sehen ... zumindest musste ich sie erstellen.
PJunior

2
Wie bei Ogugua habe ich jetzt auch einen internen Serverfehler, wenn ich diese Zeilen verwende.
landete am

1
Wenn Sie eine 500 bekommen, liegt das wahrscheinlich daran, dass Sie php-fpm verwenden, nicht mod_php.
mpchadwick

41
php_flag display_errors on

Zum Einschalten der tatsächlichen Fehleranzeige.

Um die angezeigten Fehlertypen festzulegen, müssen Sie Folgendes verwenden:

php_value error_reporting <integer>

Kombiniert mit den ganzzahligen Werten dieser Seite: http://php.net/manual/en/errorfunc.constants.php

Wenn Sie -1 für Ihre Ganzzahl verwenden, werden alle Fehler angezeigt und sind zukunftssicher, wenn neue Fehlertypen hinzugefügt werden.


17

Ich möchte der vorhandenen Antwort weitere Details hinzufügen:

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /full/path/to/file/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0

Geben Sie der Protokolldatei die Berechtigung 777 oder 755 und fügen Sie den Code hinzu

<Files php_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
</Files>

am Ende von .htaccess. Dies schützt Ihre Protokolldatei.

Diese Optionen eignen sich für einen Entwicklungsserver. Für einen Produktionsserver sollten Sie dem Endbenutzer keinen Fehler anzeigen. Ändern Sie daher die Anzeigeflags auf Aus .

Weitere Informationen finden Sie unter folgendem Link: Erweiterte PHP-Fehlerbehandlung über htaccess


1
Wie wäre es, wenn Sie der Fehlerprotokolldatei chmod "0644" geben? würde es noch funktionieren?
Andre Chenier

2

Wenn Sie nur schwerwiegende Laufzeitfehler sehen möchten:

php_value display_errors on
php_value error_reporting 4

2

Das funktioniert bei mir ( Referenz ):

# PHP error handling for production servers
# Disable display of startup errors
php_flag display_startup_errors off

# Disable display of all other errors
php_flag display_errors off

# Disable HTML markup of errors
php_flag html_errors off

# Enable logging of errors
php_flag log_errors on

# Disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# Disable ignoring of unique source errors
php_flag ignore_repeated_source off

# Enable logging of PHP memory leaks
php_flag report_memleaks on

# Preserve most recent error via php_errormsg
php_flag track_errors on

# Disable formatting of error reference links
php_value docref_root 0

# Disable formatting of error reference links
php_value docref_ext 0

# Specify path to PHP error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# Specify recording of all PHP errors
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1

# Disable max error string length
php_value log_errors_max_len 0

# Protect error log by preventing public access
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.