PHP kann Nicht in Datei schreiben, obwohl es hat 777 Berechtigungen
Im Versuch, um eine php-Datei schreiben in eine Datei, befindet sich im selben Ordner. Sowohl die php-Datei und die Datei, die Ihr versucht, zu schreiben, um Ihre Berechtigungen auf 777 gesetzt (eine linux-server) sowie den Ordner Sie sich befinden. Wann immer ich rief fopen() mit 'w' oder 'w+' - Modus, die Funktion nur false zurück. Seine auf meiner Schule webserver, so gibt es keine Art, wie ich root-Zugriff zu ändern den Besitzer der Datei, um die gleichen user wie der apache. Weiß jemand, was ist falsch?
Update:
Als test, ich war mit diesem code:
$handle = fopen("test.txt", 'w');
if($handle === FALSE)
echo "\nfailed";
else
echo "\nsuccess";
fclose($handle);
Den Ausgang nun mit error-reporting aktiviert ist:
Warning: fopen(test.txt) [function.fopen]: failed to open stream: Permission denied in /<snip>/public_html/test.php on line 58
failed
Warning: fclose(): supplied argument is not a valid stream resource in /<snip>/public_html/test.php on line 63
Oben, dass ist ein code habe ich kopiert von der php-website für die fileperms () - Funktion, die prüft die Berechtigungen von der text-Datei, und die reporting -rwxrwxrwx
Den ls -al Ausgabe der entsprechenden Dateien ist
ls -al *test*
-rwxrwxrwx 1 mag5 30 1475 Dec 9 00:02 test.php*
-rwxrwxrwx 1 mag5 30 8 Dec 8 14:54 test.txt*
Auch Im nicht sicher, ob diese Fragen, aber meine Schule benutzt etwas namens Andrew File system (http://en.wikipedia.org/wiki/Andrew_File_System).
Lassen Sie uns sehen Sie den jeweiligen code. Eine Ausgabe von
ls -l
in das richtige Verzeichnis wäre ebenfalls hilfreich sein.actaully, sollte das ls -la, um die Verzeichnis-Berechtigungen auch
InformationsquelleAutor Telanor | 2009-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Telanor, AFS ist eine sehr große Ahnung.
AFS (Andrew File System) ist eine ganze Ebene des directory-Berechtigungen jenseits der traditionellen unix-Dateisysteme. Überprüfen AFS-Berechtigungen für das Verzeichnis, um sicherzustellen, dass Sie haben die Fähigkeit, Dateien in das Verzeichnis. Auch kann es nicht sein, Ihre Berechtigungen, egal, aber die Berechtigungen des Webservers (oder eher die userid, es läuft unter). Es ist schon eine lange Zeit da habe ich die AFS-also ich weiß nicht, die Befehle offhand check directory permissions.
InformationsquelleAutor MadCoder
Tun Sie dies:
Ich vorstellen, das problem ist, dass Sie nicht über die richtigen Berechtigungen für die Verzeichnis. Wenn Sie versuchen, eine Datei zu löschen, benötigen Sie Schreibberechtigung in dem Verzeichnis und "w" wird das tun.
Alternativ, wenn Sie brauchen, um zu kürzen/löschen Sie die Datei, ändern Sie die Verzeichnis-Berechtigung, so dass Sie Schreibberechtigungen haben.
Und die Verzeichnis Berechtigungen?
InformationsquelleAutor cletus
Mehr als wahrscheinlich, php wird nicht ausgeführt, wie der gleiche Benutzer als der Besitzer der Datei. Haben Sie versucht, erstellen Sie eine neue Datei im Verzeichnis mit php (nur eine zufällig benannte Datei im selben Verzeichnis)?
InformationsquelleAutor
Es gibt ein paar Gründe, warum dies scheitern könnte. Auf der Grundlage der Informationen rund, es ist nicht ein problem mit der Datei Berechtigungen. Die erste und möglicherweise die meisten wahrscheinlich, ist, dass Ihre web-server ausgeführt wird, in einer Konfiguration, es hat nur-lese-Zugriff auf das gesamte Dateisystem. Dies konnte sein, weil NFS eingehängt ist read-only, oder weil PHP oder auf dem server konfiguriert ist, in einer solchen Weise zu verhindern, dass zu schreiben.
Bitte auch, nie eine Datei 777. Auch 666 ist gefährlich genug. Dies gilt insbesondere in einer gemeinsamen Umgebung, wie einen schul-server.
Zu diesem Zeitpunkt, vorausgesetzt, Sie haben nur begrenzte Kontrolle über die server-Umgebung ist, Fragen Sie Ihren administrator für weitere Informationen.
InformationsquelleAutor McPherrinM
Es ist wie MadCoder sais.
Von den AFS-Docs:
"Die AFS-ACLs in Verbindung mit der standard-Unix - "Besitzer" - Berechtigungen. Nur der Eigentümer-Berechtigungen haben eine Wirkung auf die AFS-Datei-Zugriff; über die Unix-Berechtigungen für "Gruppe" und "andere" tun, nicht auf AFS-Dateien zugreifen.
Diese Regeln gelten. Ein Benutzer mit den entsprechenden AFS-Berechtigungen können:
Lesen einer Datei nur, wenn der UNIX-Besitzer-Lesen" - Modus gesetzt ist.
schreiben einer Datei nur, wenn der UNIX-Besitzer "Lesen" und "schreiben" - Modus eingestellt sind.
ausführen einer Datei nur dann, wenn der UNIX-Besitzer "Lesen" und "ausführen" - Modi gesetzt werden."
Um die AFS-Berechtigungen verwenden, benötigen Sie den "fs setacl" - Befehl.
InformationsquelleAutor Daniel C. Oderbolz