PHP5 Eintrag ins PHP Logfile schreiben

Cusco

Erfahrenes Mitglied
Hi,

ich möchte meine Include-Dateien absichern indem eine Variable auf existenz geprüft wird und wenn sie nicht existiert, es bedeutet daß das Skript direkt aufgerufen wurde. Wenn die Variable nicht gesetzt wurde dann soll ein Eintrag ins Standard-PHP-Logfile erfolgen und das Skript (Include-Datei) beendet werden. Gibt es eine Funktion in php ala save_cgilogfile("Es ist ein Fehler Aufgetreten!"); oder sowas? Man kann ja nicht in jede Include eine Logfile-Schreibroutiene nur wegen einer Zeile einbinden, zumindest ist es mir zu umständlich.
 
Zum einen Nachrichten in das Error Log schreiben:
http://de3.php.net/manual/de/function.error-log.php

Und zum anderne Problem eine einfache Lösung ist das ganze mit einer constanten zu lösen, da man diese nicht per url / coockie oder ähnlichem setzen kann.

hauptdatei:
PHP:
define('INCLUDET', true);
include dateien:
PHP:
if (!defined('INCLUDET')) {
    error_log("direktaufruf",0);
    die();
}
 
Zuletzt bearbeitet:
Noch eine andere Variante zu überprüfen, ob eine Datei direkt aufgerufen wird oder nicht, ohne das man erst eine Konstante definieren muss.
PHP:
if ( realpath( __FILE__ ) == realpath( $_SERVER['SCRIPT_FILENAME'] ) ) {
// direkt aufgerufen
}
 
Zum einen Nachrichten in das Error Log schreiben:
http://de3.php.net/manual/de/function.error-log.php

Und zum anderne Problem eine einfache Lösung ist das ganze mit einer constanten zu lösen, da man diese nicht per url / coockie oder ähnlichem setzen kann.

Der Tip ist gut, ich habe das jetzt auch über define gelöst. An deinen Skript gab es aber einen Fehler mit der Parameteranordnung bei error_log() da er mir ne '0' ins Logfile geschrieben hat, es waren die Parameter vertauscht und die 0 kann auch weggelassen werden. Bei mir sieht das jetzt so aus:

PHP:
error_log("Direktaufruf: ".__FILE__);
 
Halt der Messagetyp muss doch angegeben (2. Parameter) werden, ich habe mich in der Doku etwas verlesen.
 
Zurück