Jonny F.: Pfad angeben in der Error Report gespeichert werden soll.

Hallo,

ich versuche gerade den Error Report von PHP in einen Ordner meiner Wahl zu speichern, so weit bin ich bis jetzt gekommen

  
<?php  
ini_set("log_errors", 1);     /* Logging "an" schalten */  
ini_set("error_log", $_SERVER['DOCUMENT_ROOT'] . "/errorlog.txt");     /* Log-Datei angeben */  
?>  

Kann ich hier auch irgendwo einen Pfad angeben in der er die Textdatei erstellen soll

danke im Vorraus

Gruß Jonny F.

  1. Hallo,

    <?php

    ini_set("log_errors", 1);     /* Logging "an" schalten /
    ini_set("error_log", $_SERVER['DOCUMENT_ROOT'] . "/errorlog.txt");     /
    Log-Datei angeben */
    ?>

      
    
    > Kann ich hier auch irgendwo einen Pfad angeben in der er die Textdatei erstellen soll  
      
    ich verstehe dein Anliegen nicht ganz - genau das tust du doch schon!  
      
    
    > danke im Vorraus  
    
                   ^  
    Gerrrn geschehen.  
      
    So long,  
     Martin  
    
    -- 
    Wie kann es sein, dass ich von 100 Gramm Schokolade zwei Kilo zunehme?  
    
    
    1. Mein fehler, also

      <?php
      ini_set("display_errors", 0);
      ini_set("log_errors", 1);     /* Logging "an" schalten */
      ini_set("error_log", dirname($_SERVER['PHP_SELF']) . "/errorlog.txt");     /* Log-Datei angeben */

      echo dirname($_SERVER['PHP_SELF']);
      echo "kein fehler";

      gebrabbel();

      echo "fehler erzeugt";
      ?>

      ich möchte gerne das er den errorlog.txt in das Verzeichnis erstellt in den auchmeine Scripte liegen, so müsste es doch normal funktionieren, aber tut es nicht :(

      1. Hi!

        gebrabbel();
        ich möchte gerne das er den errorlog.txt in das Verzeichnis erstellt in den auchmeine Scripte liegen, so müsste es doch normal funktionieren, aber tut es nicht :(

        Bei "gebrabbel();" kann das auch nicht funktionieren, denn eine nicht vorhandene Funktion ist ein Fehler, der bereits zur Compile-Zeit auftritt, also noch bevor das Script gestartet wurde und also überhaupt die Chance hatte, deine ini-Änderungen zu bearbeiten.

        Lo!

        1. Hi!

          gebrabbel();
          ich möchte gerne das er den errorlog.txt in das Verzeichnis erstellt in den auchmeine Scripte liegen, so müsste es doch normal funktionieren, aber tut es nicht :(

          Bei "gebrabbel();" kann das auch nicht funktionieren, denn eine nicht vorhandene Funktion ist ein Fehler, der bereits zur Compile-Zeit auftritt, also noch bevor das Script gestartet wurde und also überhaupt die Chance hatte, deine ini-Änderungen zu bearbeiten.

          Lo!

          Ich hätte den Link lieber vorher schon reinschreiben sollen

          code

          bei was für fehler schreibt er dann in die error Datei einen eintrag?

          1. Hi!

            Bei "gebrabbel();" kann das auch nicht funktionieren, denn eine nicht vorhandene Funktion ist ein Fehler, der bereits zur Compile-Zeit auftritt, also noch bevor das Script gestartet wurde und also überhaupt die Chance hatte, deine ini-Änderungen zu bearbeiten.

            Entschuldigung, hier muss ich mich revidieren. Nicht vorhandene Funktionen sind doch kein Compile-Fehler. Denn wenn man sie erst im Laufe des Programmflusses anlegt - was bei PHP möglich ist - kann der Compilier gar nicht wissen, ob es sie geben wird oder nicht.

            ich möchte gerne das er den errorlog.txt in das Verzeichnis erstellt in den auchmeine Scripte liegen, so müsste es doch normal funktionieren, aber tut es nicht :(

            Da muss ich dich bitten, genauer zu beobachten und zu beschreiben, was passiert oder auch was nicht passiert. display_errors kannst du zum Testen angeschaltet lassen, das Error-Log wird auch so geschrieben. Das error_reporting solltest du aber auf alle Fälle auf E_ALL stellen. Vielleicht wird die Datei nicht angelegt, weil der PHP-Prozess keine Schreibrechte im Verzeichnis hat. Die hat er nämlich aus gutem Grund nicht. Und das solltest du auch so beibehalten. Empfehlenswert ist, ein Extra-Verzeichnis anzulegen, möglichst außerhalb des DOCUMENT_ROOT.

            ini_set("error_log", dirname($_SERVER['PHP_SELF']) . "/errorlog.txt");     /* Log-Datei angeben */

            $_SERVER['PHP_SELF'] ist auch keine empfehlenswerte Grundlage für einen Verzeichnisnamen, da der Wert vom Anwender (in Form der URL) manipuliert werden kann. (Wenn PathInfo aktiviert ist, kann man hinter den Scriptnamen nette Sachen hängen.)

            Lo!

            1. würde es gehen das ich dafür dann einfach ein Unterordner mache oder soll es gar nicht in dem Verzeichnis sein,

              also
              rootordner -> unterordner mit errorlog
              oder eher
              unterordner mit errorlog -> rootordner

              Bei der Pfadangbabe soll ich also eine relative Pfadangabe zum Ordner machen, also usr/shar/bla/errorlogverzeichnis

              Gruß Jonny F.

              1. Hi!

                würde es gehen das ich dafür dann einfach ein Unterordner mache oder soll es gar nicht in dem Verzeichnis sein,

                Besser ist es natürlich, wenn das Verzeichnis komplett außerhalb des DocumentRoots liegt. Niemand soll von außen darauf zugreifen (können), schon gar nicht auf ein beschreibbares Verzeichnis. Ein Schutz à la Deny from all hilft nur, wenn diese Konfiguration nicht zufällig gelöscht wurde.

                also
                rootordner -> unterordner mit errorlog
                oder eher
                unterordner mit errorlog -> rootordner

                Du hast doch ein Unix-System. In einem solchen gibt es eine quasi vorgegebene Verzeichnisstruktur. /var/log ist (meist) für Logfiles vorgesehen. Projektbezogene Logfiles könnten auch dort abgelegt werden, aber:

                Wenn du mehrere Projekte auf dem Server hast, empfiehlt es sich sowie für jedes Projekt ein eigenes Verzeichnis mit Unterverzeichnissen anzulegen. Denn auch Session-Dateien sollten sich kein gemeinsames Verzeichnis teilen, weil PHPs Garbage-Collector zwar mit projektspezifischen Einstellungen aber auf alle Sessiondateien im gleich konfigurierten Pfad wirkt.

                Ich würde ein /www oder /var/www anlegen, dort für jedes Projekt ein eigenes Verzeichnis erstellen und darin zum Beispiel

                .../session
                .../log
                .../docroot (öffentlich erreichbar. Domain/VHost/Alias zeigt nach hier)
                .../config  (Konfigurationsdateien)
                .../data    (nicht direkt über das Web zugängliche Daten)

                Bei der Pfadangbabe soll ich also eine relative Pfadangabe zum Ordner machen, also usr/shar/bla/errorlogverzeichnis

                Das Handbuch sagt zum error_log nicht, wo PHP es bei relativen Angaben sucht. Eine absolute Angabe sollte immer gehen und eindeutig sein.

                Lo!

                1. Hi!

                  würde es gehen das ich dafür dann einfach ein Unterordner mache oder soll es gar nicht in dem Verzeichnis sein,

                  Besser ist es natürlich, wenn das Verzeichnis komplett außerhalb des DocumentRoots liegt. Niemand soll von außen darauf zugreifen (können), schon gar nicht auf ein beschreibbares Verzeichnis. Ein Schutz à la Deny from all hilft nur, wenn diese Konfiguration nicht zufällig gelöscht wurde.

                  also
                  rootordner -> unterordner mit errorlog
                  oder eher
                  unterordner mit errorlog -> rootordner

                  Du hast doch ein Unix-System. In einem solchen gibt es eine quasi vorgegebene Verzeichnisstruktur. /var/log ist (meist) für Logfiles vorgesehen. Projektbezogene Logfiles könnten auch dort abgelegt werden, aber:

                  Wenn du mehrere Projekte auf dem Server hast, empfiehlt es sich sowie für jedes Projekt ein eigenes Verzeichnis mit Unterverzeichnissen anzulegen. Denn auch Session-Dateien sollten sich kein gemeinsames Verzeichnis teilen, weil PHPs Garbage-Collector zwar mit projektspezifischen Einstellungen aber auf alle Sessiondateien im gleich konfigurierten Pfad wirkt.

                  Ich würde ein /www oder /var/www anlegen, dort für jedes Projekt ein eigenes Verzeichnis erstellen und darin zum Beispiel

                  .../session
                  .../log
                  .../docroot (öffentlich erreichbar. Domain/VHost/Alias zeigt nach hier)
                  .../config  (Konfigurationsdateien)
                  .../data    (nicht direkt über das Web zugängliche Daten)

                  Bei der Pfadangbabe soll ich also eine relative Pfadangabe zum Ordner machen, also usr/shar/bla/errorlogverzeichnis

                  Das Handbuch sagt zum error_log nicht, wo PHP es bei relativen Angaben sucht. Eine absolute Angabe sollte immer gehen und eindeutig sein.

                  Lo!

                  Vielen Dank für die Tipps, habs jetzt entlich mal hinbekommen

                  Gruß Jonny F.