Heim > Fragen und Antworten > Hauptteil
Ich versuche, eine Datei in einen bestimmten Ordner zu schreiben, aber es funktioniert nicht permission returned
.
Also habe ich die Berechtigungen überprüft und alles schien in Ordnung zu sein. Da es sich um eine Entwicklungsumgebung handelt, habe ich beschlossen, die Berechtigungen für den „Root“-Ordner, der alle Dateien schreibt, in „Jeder kann alles tun“ zu ändern. Ich habe versucht, alle unten aufgeführten Berechtigungen zu ersetzen. Ich versuche, geerbte Berechtigungen zu entfernen. Es kann nichts getan werden.
Dann habe ich versucht, eine Datei in den „Root“-Ordner zu schreiben. Es funktionierte. Bei Unterordnern hat es funktioniert. auf Unter-Unterordnern. effizient. Es gibt einen Punkt in der Unterordnerkette, an dem es nicht funktioniert, aber vor dem eigentlichen Unterordner.
Dies ist die Pfadhierarchie zum Zeitpunkt des Absturzes.
$f = new \wee\common\IO\File(); $f->write("DRIVE:/BASE_PATH/files/-/00.jpg", "hello"); // WORKS $f->write("DRIVE:/BASE_PATH/files/-/mod/00.jpg", "hello"); // WORKS $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/00.jpg", "hello"); // WORKS $pathLength = strlen("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg"); // Real path length is 85 $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg", "hello"); // FAILS $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/WorkersManager/00.jpg", "hello"); $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/WorkersManager/workers/00.jpg", "hello");
Klasse weecommonIOFile
wurde von mir erstellt, kann aber an vielen anderen Orten verwendet werden.
Die genaue Fehlermeldung, die ich erhalten habe, war:
fopen(DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg):无法打开流:权限被拒绝
Hundertprozentig klar: Der „Root“-Ordner ist DRIVE:/BASE_PATH/files/
Hier ist die Umsetzung der File
类的write
-Methode.
public function write($fileName, $data, $lock = false) { $this->_write($fileName, $data, $lock); } private function _write($fileName, $data, $lock = false, $openMode = 'w') { if ($data === null) $data = ""; $fh = fopen($fileName, $openMode) or die("can't open file"); // FAILS HERE if ($lock) { flock($fh, LOCK_EX); } fwrite($fh, (is_array($data) ? join("\n", $data) : $data)); if ($lock) { fflush($fh); flock($fh, LOCK_UN); } fclose($fh); }