PHP: copy() ist, vermasselt Sie die Datei Berechtigungen irgendwie
Habe ich ein Bild uploader auf meiner Seite...
Das Bild hochgeladen wird, um eine temporäre 777 Ordner (dieses Bild funktioniert einwandfrei und kann gelöscht werden), dann kopiere ich diese Datei in ein neues Verzeichnis mit copy()
die neue Datei geschrieben wird, um eine 777-Ordner, kann aber nicht gelöscht werden. chmod()
scheint nicht zu helfen...
Warum die copy()
Funktion erstellen Sie die neue Datei irgendwie anders an die original-Datei? Ich sehe keine Unterschiede in meinen FTP-client. BEIDE haben Dauerwellen 644 und der user 'nobody/99' - aber es ist nur ein problem für die zweite Datei.
Irgendwelche Ideen?
- vielleicht gibt es eine alternative Funktion, die ich verwenden können, um
copy()
? - Die Datei-Berechtigungen nicht beeinflussen, ob oder nicht, können Sie die Verknüpfung der Datei. Sie müssen Schreibzugriff auf das Verzeichnis, um die Verknüpfung der Datei. Überprüfen Sie Ihre Verzeichnis-Berechtigungen.
- die Verzeichnisse sind in Ordnung, ich kann das erstellen und löschen von Dateien in Ihnen. das Problem ist die copy()...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie manuell die Berechtigungen setzen bits selbst: versuchen Sie diese.
chown
- Funktion (siehe php.net/manual/en/function.chown.php), ändert den Besitzer einer Datei, aber in der Regel mußt du root sein, das zu tun. Probieren Sie es aus und sehen, ob es funktioniert. Die andere option könnte sein, verwenden Sie eine shell, und führen Sie einecp -a $temp_img_url $save_file_as
und sehen, ob das bewahrt Eigentums - /Datei-Attribute, aber wieder einmal kann Ihre Laufleistung variieren je nach den verfügbaren Berechtigungen, um die Benutzer dem web-server ausgeführt wird.War die Frage der übergeordneten Ordner.
Musste ich
chmod()
den übergeordneten Ordner, obwohl ich es geschafft hatte, wit777
Dauerwellen....Weil
copy()
macht eine neue KOPIE der Datei. Nur Ihre Inhalte bleiben die gleichen. Berechtigungen für die neue Datei gesteuert, die von Ihrem Skript -umask()
Einstellung, und der neue Dateiname wird von Ihnen kontrolliert.(new file's permissions) and (not (umask))
um die neue Datei, die Erlaubnis-bits. Daher ist die Festlegung einer Maske von 0 wird invertiert auf 0xFF und anded mit dem anderen Wert, der Rückkehr zum ursprünglichen Wert.umask(0); copy($temp_img_url, $save_file_as);
(ich bin nicht considerring Sicherheit an dieser Stelle)