• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[PHP] - Problem beim Dateiöffnen mit fopen()

HTML 4 YOU

New member
Hey liebe Community!

Ich habe mit PHP vor einiger Zeit eine Funktion geschrieben, die die IP des Nutzers, den Benutzen Browser, das Datum und die Uhrzeit ausliest & die Daten in eine Datei schreibt.
Es hatte immer funktioniert, nur jetzt aufeinmal nicht mehr.
Die Fehlermeldung die ich unter der Verwendung von: error_reporting(E_ALL); + ini_set('display_errors', 1); herausbekam, war:

Code:
Warning: fopen(userinfo.txt) [function.fopen]: failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/....../functions.php on line 7

Dabei habe ich sogar schon den Modus auf a+ gestellt, aber der Fehler blieb weiter bestehen.

Ansonsten bekam ich nur die typischen Folgefehler. Die php.ini ist richtig konfiguriert. Hier mein Funktions-Code:

PHP:
function saveUserInfo($ip, $browser, $date, $time) {
    
    if($ip == 'true' || $browser == 'true' || $date == 'true' || $time == 'true') {

        $file = fopen('userinfo.txt', 'a+');

        if($ip == 'true') {
            $ip = $_SERVER['REMOTE_ADDR']; 
            fwrite($file, $ip.' ');
        }

        if($browser == 'true') {
            $browser = $_SERVER['HTTP_USER_AGENT'];
            // Nur den Browser herausfiltern, ohne das OS
            $browser = explode("/",$browser);
            $browser = $browser[0];
            fwrite($file, $browser.' ');
        }
        
        if($date == 'true') {
            $date = date('j-M-Y, l');
            fwrite($file, $date.' ');
        }
        
        if($time == 'true') {
            $time = date('H:i:s');
            fwrite($file, $time.' ');
        }
        
        fwrite($file, '| ');
        fclose($file);
         
    }  
           
}

Ich weiß nicht, woran es liegen könnte. Bitte um Hilfe. Wenn ihr noch Fragen habt, dann fragt ruhig.


Danke, an alle die sich bemühen mir zu helfen!
 
Probiers mal so:

PHP:
$handle = fopen('userinfo.txt', 'a+');

EDIT: und natürlich alle $file durch $handle ersetzen.
 
ok, also ich habe erst einen absoluten Pfad mit URL genommen (ich habe file_url_open auf 1 gestellt) und da hat es nicht geklappt.

(Die Verzeichnisstruktur ist:

Homepage:
-> html
-> Alle HTML & PHP Dateien
// Darunter auch die functions.php, wo die Funktion liegt
-> images
-> Alle Bilder
-> styles
-> Alle CSS-Sheets
-> scripts
-> Alle JavaScripts
->........)

Dann habe ich es mit dem relativen Pfad ../html/userinfo.txt versucht, aber selbes Ergebnis: Permission dinied. Nächster Versuch war dann ../images/userinfo.txt und siehe da: Es klappt. Anscheinend, ist das Verzeichnis geschützt, was ich persönlich aber nicht verstehe, da ich nur mit htaccess, die Fehlerseiten definiert habe, die in diesem Ordner liegen. Aber daran sollte es eigentlich nicht liegen. Werde mal weiter in meinen Codes suchen. Und das komische ist ha, dass es vorher IMMER funktioniert hat. Dabei fällt mir gerade etwas ein, dass evtl. den Fehler verursachen könnte, werde es mal kurz checken.

Danke nochmal @all!
 
Hat jetzt nichts mit dem Thema zu tun, ABER warum arbeitest du bei den Funktionsparametern mit Strings und nicht mit Booleans?
 
ups, hab ich noch net geändert? Liegt wahrscheinlich daran, dass die Funktion ja (wie schon gesagt) "etwas" älter ist & ich damals PHP noch net so gut konnte, hab wahrscheinlich gedacht, dass es ohne '' nicht geht & dadurch das ganze ein String ist/war & kein Bool, aber ich habs mal geändert, thx :D

EDIT: Beim Funktionsaufruf, hab ich es sogar als Bool gemacht & net als String, hätt nicht gedacht, dass das funktioniert, wahrscheinlich konvertiert PHP bei der if Abfrage den Bool in einen String..
 
Ich habe jetzt mal geguckt, und meine Vermutung, hat sich (leider) nicht bestätigt. Hatte gedacht, dass es wegen ein paar Weiterleitungen ist, aber daran lags offenbar nicht, werd weiter mal den Code durchstöbern.

EDIT: Die .htaccess wars auch nicht.
 
Zuletzt bearbeitet:
Der Fehler kommt auch wenn die Datei noch offen ist (durch eine andere Applikation oder einen Fehler, PC mal runterfahren).
 
Ich habe mal den Namen der Datei geändert, jetzt funktioniert das ganze auch in dem Ordner, hätte ich auch vorher mal machen können^^
 
Zurück
Oben