PHP schreibt ohne Seitenaufruf in Datei

mariusHSK05

Cadet 3rd Year
Registriert
Nov. 2019
Beiträge
34
Hallo zusammen!
Ich hab ein merkwürdiges Problem. Und zwar hab ich mir einen PHP Skript erstellt, der einen Seitenaufruf in einer Datei festhält (fOpen, fWrite, fClose). Der Skript steckt in meiner 404-Seite. Sobald die Seite aufgerufen wird, schreibt der Skript alle weiteren Infos in eine Datei. Das soll er ja auch machen.
Aber: Er schreibt auch ohne dass ich die Seite öffne! Wenn ich irgendeinen anderen Link nehme, z.B. nicht /errorpages/404.php sondern /dateien, schreibt er trotzdem in diese Datei rein (mit dem Pfad /dateien). Aber das soll er ja nicht!

Hier der Skript:
PHP:
<?php
$fehler = "Error 404" . ", " . "Datum: " . date("d.m.Y H:i") . ", Referent: " . $_SERVER['HTTP_REFERER'] . ", Remote-Adresse: " . $_SERVER['REMOTE_ADDR'] . ", Protokoll-Version: " .  $_SERVER['SERVER_PROTOCOL'] . ", Remote Host: " .  $_SERVER['REMOTE_HOST'] . ", HTTPS: " . $_SERVER['HTTPS'] . ", Request-URI: " . $_SERVER['REQUEST_URI'] . "\n";
$handler = fOpen("errorlog.txt" , "a+");
fWrite($handler, $fehler);
fClose($handler);
?>
Und vllt. noch meine .htaccess-Datei:
Code:
ErrorDocument 403 https://------.eu/errorpages/403.php
ErrorDocument 404 https://------.eu/errorpages/404.php

Weiß jemand, warum das passiert?
Danke im Voraus!
LG mariusHSK05
 
Das passiert, weil der Pfad /dateien kein Pfad mit einer Seite ist, daher nicht gefunden werden kann, daher vom Server ein 404 geworfen wird, und entsprechend dein Script aufgerufen wird.

Das is Sinn der Sache... alles was nicht gefunden werden kann wirft einen 404. Dass dadurch das Script aufgerufen wird hast du ja selbst definiert.
 
Mihawk90 schrieb:
Das passiert, weil der Pfad /dateien kein Pfad mit einer Seite ist, daher nicht gefunden werden kann, daher vom Server ein 404 geworfen wird, und entsprechend dein Script aufgerufen wird.

Das is Sinn der Sache... alles was nicht gefunden werden kann wirft einen 404. Dass dadurch das Script aufgerufen wird hast du ja selbst definiert.

Ja? Auch wenn in /dateien eine index.html drin ist? Okay, dann muss ich nochmal was ändern. Danke für deine Hilfe!
 
Wenn da eine index.html drin ist, sollte diese automatisch gewählt werden und der Server drauf umleiten, das ist zumindest in der Regel die Standardeinstellung. Wenn du wirklich die index.html zurückkriegst, sollte auch kein 404 zurückkommen und entsprechend auch der ErrorHandler nicht greifen.
 
Wenn ich jetzt /dateien aufrufe, lande ich auf der entsprechenden index.html, aber trotzdem finde ich in der errorlog.txt dann den Eintrag "/dateien"... irgendwie komisch
 
wenn dir jemand was böses will, dann ruft er jetzt solange nicht existierende seiten auf, bis dein 404 script dir die platte vollgeschrieben hat. normalerweise loggt sowas der webserver über einen logging daemon, der das log rotiert/komprimiert.
 
  • Gefällt mir
Reaktionen: Mihawk90
Mh ich weiß nicht wie Apache das intern regelt, ich hätte eigentlich erwartet, dass er mit einem 301 oder zumindest 302 antwortet...
 
0x8100 schrieb:
wenn dir jemand was böses will, dann ruft er jetzt solange nicht existierende seiten auf, bis dein 404 script dir die platte vollgeschrieben hat. normalerweise loggt sowas der webserver über einen logging daemon, der das log rotiert/komprimiert.

Also sollte ich meinen Skript lieber nicht verwenden, sondern den logging daemon?
 
dein webserver wird das sicher jetzt schon alles loggen. wo das liegt, ist unterschiedlich. bei mir z.b. /var/log/apache2/access_log
 
Gut, dann schreib ich mir den Pfad mal auf ;)

Danke für eure Hilfe!
 
Zurück
Oben