2012-10-05 6 views
5

Nach fopen documentation, wird es in einigen Modi die Datei erstellen, wenn es nicht existiert, aber in meiner Situation habe ich alle 'w', 'w +', 'x überprüft 'und' x + 'Modi, aber es wirft nur Warnungen an mich und es kann die Datei nicht erstellen.PHP fopen() erstellt keine Datei

Es ist mein Code:

$this->handle = fopen($this->log_name, 'w'); 

und was ich bekommen:

Warning: fopen(D:\xampp\htdocs\farid\logs\error.php) [function.fopen]: failed to open stream: No such file or directory in D:\xampp\htdocs\farid\libraries\error\log.php on line 34 
Warning: fwrite() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\farid\libraries\error\log.php on line 66 
Warning: fclose() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\farid\libraries\error\log.php on line 27 

Und ich bin in Windows-Umgebung arbeiten.

+2

Sind diese Verzeichnisse vorhanden? – aynber

+2

Dateiberechtigungen sind der offensichtlichste Verdächtige –

+1

Aus der gleichen Dokumentation - "Wenn PHP entschieden hat, dass Dateiname eine lokale Datei angibt, dann wird versucht, einen Stream für diese Datei zu öffnen. Die Datei muss für PHP zugänglich sein, also müssen Sie Stellen Sie sicher, dass die Dateizugriffsberechtigungen diesen Zugriff zulassen. Wenn Sie den abgesicherten Modus oder open_basedir aktiviert haben, gelten möglicherweise weitere Einschränkungen. " –

Antwort

9

Überprüfen Sie, ob der Pfad zur Protokolldatei vorhanden ist, es erstellt eine Datei, kein Verzeichnis.

Überprüfen Sie auch, ob der Benutzer, der xampp ausführt, Zugriff auf den von Ihnen angegebenen Ordner hat.

+0

Danke für Ihre Hilfe, es gab einen Fehler in meinem Verzeichnisnamen. Jetzt wird eine Datei erstellt. Gibt es einen Weg, so dass ich sogar den Ordner erstelle, wenn er nicht in meiner Funktion existiert? –

+1

check out http://php.net/manual/en/function.mkdir.php überprüfen Sie die Argument-Abschnitt Suche nach "rekursiv", zuerst müssen Sie überprüfen, ob die Datei existiert, 'realpath' und' file_exists' könnte sein hilfreich –