Perl-"or die $!" in PHP?
*Markus
- php
0 Vinzenz Mai0 *Markus0 dedlfix0 *Markus0 Vinzenz Mai0 dedlfix
Hallo,
ich benötige das PHP-Äquivalent zu "or die $!" in Perl. Ich habe dazu irgendwie nichts brauchbares gefunden. In einem Beitrag fand ich eine Antwort, wo man meinte, die Systemfehler würden ausgegeben werden, wenn man or die weglässt, aber das funktioniert bei mir nicht. Ich bekomme dann nämlich gar keine Ausgabe. Daraufhin versuchte ich in der php.ini display_errors = On zu setzen, aber trotzdem kein Ergebnis?
Markus
Hallo Markus,
ich benötige das PHP-Äquivalent zu "or die $!" in Perl.
das ist meiner Meinung nach eine schlechte Problembeschreibung. Was möchtest Du erreichen?
Daraufhin versuchte ich in der php.ini display_errors = On zu setzen, aber trotzdem kein Ergebnis?
Und wie sieht es mit error_reporting() aus?
Freundliche Grüße
Vinzenz
Hallo,
das ist meiner Meinung nach eine schlechte Problembeschreibung. Was möchtest Du erreichen?
Ich will vernünftige Fehlermeldungen bekommen.
Beispielseweise gibt diese Zeile...
$filehandle = fopen($dir . DIRECTORY_SEPARATOR . $file, 'r') or die ("Fehler beim Öffnen der Datei!");
...die "or die"-Meldung aus, aber ich möchte wissen wieso das File geöffnet werden konnte, also die Systemmeldung.
Und wie sieht es mit error_reporting() aus?
Gut, das kannte ich noch nicht. Hilft mir aber in diesem Fall nicht weiter, obwohl ich jetzt mal error_reporting(E_ALL); setzte. Soll aber laut Angabe ohnehin der php.ini-Standardeinstellung entsprechen.
Markus
echo $begrüßung;
Ich will vernünftige Fehlermeldungen bekommen.
Beispielseweise gibt diese Zeile...
$filehandle = fopen($dir . DIRECTORY_SEPARATOR . $file, 'r') or die ("Fehler beim Öffnen der Datei!");
>
> ...die "or die"-Meldung aus, aber ich möchte wissen wieso das File geöffnet werden konnte, also die Systemmeldung.
Wenn du als Programmierer das wissen möchtest, warum erzählst du es dann dem Anwender?
> > Und wie sieht es mit [error_reporting()](http://www.php.net/manual/de/function.error-reporting.php) aus?
>
> Gut, das kannte ich noch nicht. Hilft mir aber in diesem Fall nicht weiter, obwohl ich jetzt mal error\_reporting(E\_ALL); setzte. Soll aber laut Angabe ohnehin der php.ini-Standardeinstellung entsprechen.
Nur wenn man die recommended-Version der php.ini nimmt. Da muss man allerdings display\_errors einschalten, wenn man wirklich Fehlermeldungen in der normalen Ausgabe haben möchte (in der Entwicklungsumgebung beispielsweise). Ansonsten ist das error\_reporting auf E\_ALL abzüglich E\_NOTICE eingestellt.
Ob du vernünftige Meldungen bekommst oder nicht hängt ja von deinem Verständnis von vernünftig ab :-) PHP stellt die Meldungen in der Variable [$php_errormsg](http://www.php.net/manual/en/reserved.variables.phperrormsg.php) zur Verfügung, wenn [track_errors](http://www.php.net/manual/en/errorfunc.configuration.php#ini.track-errors) eingeschaltet ist. Ansonsten wirft es sie nur an die Front, wenn die anderen dir nun bekannten Konfigurationsparameter entsprechend gesetzt sind.
Weitere Informationen im Kapitel [Error Handling and Logging](http://www.php.net/manual/en/book.errorfunc.php).
echo "$verabschiedung $name";
Hallo,
danke. Jetzt bekam ich die Warnungen angezeigt. Im Prinzip habe ich or die jetzt gar nicht benötigt, da alle Warnungen am Bildschirm angezeigt werden, obwohl ich an der php.ini nichts mehr änderte.
Hängt es etwa damit zusammen, dass der Apache neu gestartet wurde, und das Anzeigen der Warnungen deswegen plötzlich funktioniert?
Ich dachte nämlich, dass der Parser ständig die php.ini ausliest.
Markus
Hallo Markus,
Hängt es etwa damit zusammen, dass der Apache neu gestartet wurde, und das Anzeigen der Warnungen deswegen plötzlich funktioniert?
Ich dachte nämlich, dass der Parser ständig die php.ini ausliest.
Handbuch lesen hilft.
Freundliche Grüße
Vinzenz
echo $begrüßung;
Ich dachte nämlich, dass der Parser ständig die php.ini ausliest.
Jein, oder: das kommt darauf an. Die php.ini wird immer nur beim PHP-Start gelesen. Als im Apachen eingebettetes Modul startet PHP nur beim Start des Apachen. Als CGI startet PHP bei jedem Aufruf. Für die Modulvariante gibt es aber die Möglichkeit, über die Per-Verzeichnis-Konfigurationsdatei des Apachen (meist .htaccess genannt) diverse PHP-Einstellungen zu beeinflussen. Siehe http://php.net/manual/en/configuration.changes.php. Beachte die PHP_INI_*-Werte der jeweiligen Direktiven.
echo "$verabschiedung $name";