Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Weiße Seite bei PHP-Fehler, obwohl display_errors=on

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Andreas I.
PostRank 9
PostRank 9
Beiträge: 1464
Registriert: 18.03.2006, 14:36
Wohnort: Hamburg

Beitrag von Andreas I. » 15.06.2010, 12:03

Hallo,

ich kriege auf einem Server bei Fehlern im PHP eine wenig hilfreiche weiße Seite. display_errors ist auf "on" und wird auch so von phpinfo() angezeigt:

display_errors: Local Value: On, Master Value: Off

(Eigentlich müsste er doch so Fehlermeldungen anzeigen, oder?)

Hilft nicht:
error_reporting(E_ALL);

Ohne Wirkung:
ini_set ('error_reporting', E_ALL);

Es ist ein PHP 5.2.13

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


berni
PostRank 4
PostRank 4
Beiträge: 112
Registriert: 21.03.2004, 08:51

Beitrag von berni » 15.06.2010, 13:30

machst du ein @include("script.php") [oder ähnliches] ?

wenn ein @ davor ist .... dann nimm das mal weg

Andreas I.
PostRank 9
PostRank 9
Beiträge: 1464
Registriert: 18.03.2006, 14:36
Wohnort: Hamburg

Beitrag von Andreas I. » 15.06.2010, 13:50

Nun, ich hatte bis eben gerade nur ein @-Zeichen im Script für die Datenbankanbindung_

Code: Alles auswählen

<?php
$db=@mysql_connect&#40;"***","***","***"&#41;;
mysql_select_db&#40;***,$db&#41;;
mysql_query&#40;"SET NAMES 'utf8'"&#41;;
?>
Aber das unterdrückt dann doch nur Fehlermeldungen im Zusammenhang mit der Datenbankverbindung, oder?

Na, ich hab mal auf Verdacht das @-Zeichen rausgenommen und es brachte keine Besserung.

@include mache ich nicht.

berni
PostRank 4
PostRank 4
Beiträge: 112
Registriert: 21.03.2004, 08:51

Beitrag von berni » 15.06.2010, 14:02

genau, das @ unterdrückt die Fehlermeldung!

wenn deine index.php aber zB: folgendes beinhaltet:

Code: Alles auswählen

<?
@include&#40;"mysql-fkt.php"&#41;;
?>
und in der Datei "mysql-fkt.php" ein Fehler ist, würde dieser nicht ausgegeben werden

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 15.06.2010, 14:09

Was hast Du denn zuletzt geändert? Vielleicht ein Update von PHP4 auf 5, Module geändert oder so etwas die Richtung?

Ansonsten... Schon mal nachgesehen ob vielleicht eine betroffene Datei mit einem BOM versehen ist. Der macht Probleme und liefert keine Fehlermeldung.

Bzw. teste doch mal mit einer anderer Minidatei ob die Fehlerausgabe überhaupt geht.

<?php
echo 'Semikolon fehlt'
?>

Wenn da dann auch kein Fehler angezeigt wird, dann ist die Fehlerausgabe definitiv nicht aktiv. Schau dann einfach ins Log, was der Fehler überhaupt ist.

Eventuell auch ein Speicherproblem. Also nicht "memory_limit", sondern direkt der Server-Speicher. Wenn der aufgebraucht ist, dann gibt es auch keine Fehlermeldung von PHP.

Andreas I.
PostRank 9
PostRank 9
Beiträge: 1464
Registriert: 18.03.2006, 14:36
Wohnort: Hamburg

Beitrag von Andreas I. » 15.06.2010, 14:18

Nein, da habe ich nur u.a.

Code: Alles auswählen

<?php...
include&#40;"../PHP/db.php"&#41;;
...
?>
Und das @-Zeichen wäre dann in der db.php gewesen (siehe oben)...
Die Fehlerunterdrückungsmimik des @-Zeichen pflanzt sich dann aber nicht ins Hauptscript fort, oder?

Naja, aktuell ist auch im includierten Script kein @-Zeichen mehr, aber vielleicht muss man nur das ablaufen irgendwelcher Caches abwarten? So ganz den Einblick hat man bei shared hosting ja nicht.

Insgesamt glaube ich aber, dass es eher nicht am @-Zeichen liegt. Habe eben versuchsweise mal das db.php-script entfernt und es kam immer noch eine weiße Seite. (Und der Rest der Domain funktionierte für 10-20 Sekunden nicht) Also irgendwelche geheimnisvollen Caches kommen auch nicht in Frage.
Zuletzt geändert von Andreas I. am 15.06.2010, 14:30, insgesamt 2-mal geändert.

Andreas I.
PostRank 9
PostRank 9
Beiträge: 1464
Registriert: 18.03.2006, 14:36
Wohnort: Hamburg

Beitrag von Andreas I. » 15.06.2010, 14:20

@Synonym:

Genau diesen Test mit fehlendem Semikolon habe ich durchgeführt. Es kommt eine weiße Seite und keine Fehlermeldung.

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 15.06.2010, 14:24

Insgesamt glaube ich aber, dass es eher nicht am @-Zeichen liegt.
Ich auch nicht. Da wird auch nichts vererbt und einen "Cache" gibt es da auch nicht. Das mit dem Semikolon hätte einen Fehler bringen müssen und tut es nicht.

Schau ins Log, das ist die einfachste Möglichkeit.

Ich für meinen Fall hatte das vor ein paar Wochen. Update installiert und da war dann ein Modul nicht mehr kompatibel. Fehlermeldungen hatte ich da auch keine.

PHPSchmied
PostRank 3
PostRank 3
Beiträge: 79
Registriert: 20.11.2008, 15:53

Beitrag von PHPSchmied » 15.06.2010, 14:37

Schonmal daran gedacht das das Skript ordentlich durchläuft aber die Ausgabe am ende nicht stattfindet? Z.b ob_start? Eigenes Templatet system welches einfach die Templates nicht findet? Browserkomprimierung? Kein Flushing? Bau doch mal Schrittweise:

echo 'hi'; exit;

ein damit du den Fehler Lokalisieren kannst. Außerdem bitte absichtlich mal irgendwo ein Semikolon vergessen damit du die Fehlerausgabe testen kannst.

Andreas I.
PostRank 9
PostRank 9
Beiträge: 1464
Registriert: 18.03.2006, 14:36
Wohnort: Hamburg

Beitrag von Andreas I. » 15.06.2010, 14:47

Habe leider nur Zugriff auf das sendmail.log und die logs für die übertragenen webseiten.
Ein error.log gibt es nicht oder ich habe keinen Zugriff darauf.

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 15.06.2010, 14:48

Außerdem bitte absichtlich mal irgendwo ein Semikolon vergessen damit du die Fehlerausgabe testen kannst.
Du hast aber schon gelesen vorher, oder? Genau das hat er schon gemacht.

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 15.06.2010, 14:49

magst Du nicht mal die phpinfo() zeigen? Ansonsten, was ist denn das für ein Hoster... Keine Logfiles, das hatte ich noch nie.

Andreas I.
PostRank 9
PostRank 9
Beiträge: 1464
Registriert: 18.03.2006, 14:36
Wohnort: Hamburg

Beitrag von Andreas I. » 15.06.2010, 14:50

@PHPSchmied:

Dieses Script erzeugt eine weiße Seite, aber keinen Fehler:

Code: Alles auswählen

<?php
echo "abc"
echo "xyz"
?>

Andreas I.
PostRank 9
PostRank 9
Beiträge: 1464
Registriert: 18.03.2006, 14:36
Wohnort: Hamburg

Beitrag von Andreas I. » 15.06.2010, 17:41

@Synonym:
Hier mal phpinfo() als Bild:

Bild

Klicken zum Vergrößern, einige Daten unkenntliche gemacht.

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 15.06.2010, 18:12

also versuch mal folgendes:

display_errors:
= on (ist vorhanden)

error_log:
Da kannst Du mal einen selbst definierten Pfad für das Logfile anlegen
ini_set ('error_log', '/var/www/dein/pfad/php_error.log');
php_error.log anlegen und Rechte auf 777 setzen

error_reporting:
Ist derzeit 81. Setze das mal auf 30719.
ini_set ('error_reporting', '30719'); (alternativ E_ALL)

log_errors:
Ist derzeit off
ini_set ('error_reporting', '1'); oder
ini_set ('error_reporting', 'true');

Eventuell auch mal das output_buffering ausschalten:
ini_set ('output_buffering', '0') (eventuell auch 'Off')

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag