487 Stimmen

Wo speichert PHP das Fehlerprotokoll? (PHP 5, Apache, FastCGI, und cPanel)

Ich verwende Shared Hosting und habe cPanel , Apache und PHP wird von FastCGI . Wo speichert PHP das Fehlerprotokoll?

Gibt es eine andere Möglichkeit, wie ich das Fehlerprotokoll in einer gemeinsam genutzten Hosting-Umgebung finden kann, anstatt die gesamte Website-Struktur zu durchsuchen, um nach fehler_protokoll Dateien?

Ich habe Zugang zu den php.ini Datei (ich verwende PHP Version 5.2.16).

41 Stimmen

Unter Linux wird entweder /var/log/httpd/error_log o /var/log/apache2/error.log . Diese Dateien sind Eigentum von Root, also müssen Sie Root sein oder sudo um sie zu sehen oder zu lesen.

135 Stimmen

php --info | grep error

14 Stimmen

Für diejenigen, die eine Windows-Lösung suchen, verwenden Sie php --info | findstr /r /c:"error_log" um zu sehen, wo sich die Protokolldatei befindet.

14voto

Vivek Punkte 462

Es kann auch sein /var/log/apache2/error.log wenn Sie sich in Google Compute Engine .

Und so kann man den Schwanz sehen:

tail -f /var/log/apache2/error.log

13voto

ThorSummoner Punkte 13974

Es scheint, dass PHP standardmäßig protokolliert nicht Fehler überall. Die Website error_log in der php.ini ist bei allen Installationen, die ich gesehen habe, auskommentiert.

Im Allgemeinen I:

  1. suchen php.ini Dateien. locate php.ini .

  2. Suchen Sie in diesen Dateien nach dem error_reporting Wert;

    Diese sollte auf eine beliebige Kombination von PHP-Protokollebenen gesetzt werden, die für Sie ausreichend ist. ,

    Zum Beispiel: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. Prüfen Sie die error_log Wert, um sicherzustellen, dass er auf eine tatsächliche Stelle zeigt und nicht auskommentiert ist.

    Der Standardwert gibt keinen vollständigen Pfad an, sondern nur einen Dateinamen; ich weiß nicht, wohin dieser Pfad normalerweise aufgelöst wird. Wahrscheinlich /var/log/ .

12voto

mailo Punkte 2571

Sie sollten den absoluten Pfad verwenden, wenn Sie fehler_protokoll Variable in Ihrer php.ini Datei, andernfalls werden die Fehlerprotokolle entsprechend dem relativen Pfad gespeichert.

error_log = /var/log/php.errors

Eine andere Lösung wäre das Schreiben eines einfachen Skripts, das alle Fehlerprotokolldateien im Verzeichnisbaum auflistet.

9voto

J4GD33P 51NGH Punkte 588
php --info | grep error

Dies ist hilfreich.

6voto

Dan Allen Punkte 46

Ich kann Ihnen garantieren, dass ich nicht der Einzige bin, der bei der frustrierenden Suche nach einer Protokolldatei mindestens einmal in den Wahnsinn getrieben wurde. Es scheint, als ob sie im ganzen System am leichtesten zu finden sein sollte.

Eine endgültige Anleitung, wo das PHP-Fehlerprotokoll gespeichert wird, wäre eine komplizierte Angelegenheit. Das offizielle PHP-Handbuch versucht nicht einmal, das ganze Thema anzusprechen, da es Abhängigkeiten von Systemen außerhalb von PHP gibt, wie z.B. dem Betriebssystem (Linux vs. Windows, welche Linux-Distribution), einschließlich Einstellungen innerhalb von Windows und Linux, die den Namen und den Speicherort des PHP-Fehlerprotokolls beeinflussen.

Solange sich niemand die Zeit nimmt, eine vollständige, systemübergreifende Anleitung zu schreiben, werden Sie bestenfalls allgemeine Hinweise bekommen, wo Sie nachfragen können. Jeder PHP-Entwickler hat bei dieser Suche Qualen ertragen müssen, mit einer Ausnahme. Wenn man an einem Ort arbeitet und die Informationen zur Verfügung gestellt bekommt, wenn man sie zum ersten Mal braucht, dann hat man den Informationsbedarf für immer, das heißt, bis man sich in einer neuen Arbeitsumgebung wiederfindet. Es gibt solche glücklichen Menschen.

Wenn Ihnen die Informationen nicht auf dem Silbertablett serviert werden, müssen Sie sich auf die Suche machen. Die Jagd ist nicht die längste, aber auch nicht die einfachste, die Sie in Ihrer Laufbahn zu bewältigen haben werden.

Wie aus den zahlreichen Antworten hervorgeht, ist es sinnvoll, mit der Ausgabe von phpinfo() . Um sie anzuzeigen, erstellen Sie eine PHP-Datei, die dies enthält:

<?php
    phpinfo();

Suchen Sie entweder nach dieser Datei oder führen Sie sie über die Befehlszeile aus. Wenn Sie beides tun, werden Sie wahrscheinlich die fehler_protokoll befindet sich an verschiedenen Stellen, je nachdem, ob PHP auf der Kommandozeile oder auf dem Webserver verwendet wird. Das liegt daran, dass der PHP-Interpreter, der auf einem Webserver läuft, nicht derselbe PHP-Interpreter ist, der von der Kommandozeile aus läuft, selbst wenn die Kommandozeile auf demselben Rechner wie der Webserver ist. Die Antworten, die hier bereits gepostet wurden, gehen meist von der unausgesprochenen Annahme aus, dass PHP als Teil eines Webservers läuft.

Sample output from phpinfo() via web server and web browser

Der Standardwert für error_log ist kein Wert

Default error_log in php running as an Apache mod.

Welcher Wert auch immer es ist, er kommt von der php.ini Dateien, die zur Konfiguration von PHP verwendet werden. Es können viele sein php.ini Dateien. Es ist anfangs etwas verwirrend, sich in diesen Dateien zurechtzufinden, aber das ist nicht nötig, um Ihr PHP-Protokoll zu finden.

Wenn die Ausgabe von phpinfo() einen vollständigen Pfad zu einer Datei anzeigt, befindet sich das Protokoll dort. Sie haben Glück.

Der Trick ist, dass in phpinfo() normalerweise kein vollständiger Pfad angegeben ist. Wenn es keinen vollständigen Pfad gibt, hängt der Ort davon ab:

  1. Ob error_log ist kein Wert . Wenn dies der Fall ist, hängt der Speicherort der Protokolldatei vom Betriebssystem und dem Modus ab, in dem PHP läuft. Wenn PHP als Apache-Modul läuft, befindet sich die Protokolldatei unter Linux oft in /var/log/apache2/error.log . Ein anderer wahrscheinlicher Ort ist das Logs-Verzeichnis in Ihrem Home-Verzeichnis des Kontos, ~/logs/error.log .

  2. Wenn es einen Dateinamen ohne Pfad gibt, hängt der Speicherort davon ab, ob der Dateiname den Wert syslog . Wenn es syslog dann wird das PHP-Fehlerprotokoll in das Syslog des Servers eingespeist, das je nach Linux-Distribution unterschiedlich ist. Ein üblicher Ort ist /var/log/syslog aber es kann überall sein. Selbst der Name des Syslogs variiert je nach Distribution.

  3. Wenn der Name ohne Pfadangabe nicht syslog ist, wird die Datei häufig im Document Root der Website abgelegt (auch bekannt als Home-Verzeichnis der Website, nicht zu verwechseln mit dem Home-Verzeichnis Ihres Accounts).

Dieser Spickzettel hat sich in einigen Situationen als hilfreich erwiesen, aber ich muss leider zugeben, dass er nicht annähernd universell ist. Sie haben mein Beileid.

Enter image description here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X