Andreas Korthaus: move file

Beitrag lesen

Hallo!

ich habe im manual gesucht, aber keine Funktion gefunden, die eine Datei verschieben kann. (Ausser direkt nach dem upload, mit move_uploaded_file)
Soll das so sein oder gibt es eine Funktion, die ich übersehen habe?

copy() ?

Wie würde man das sonst realisieren?

Hintergrund:
Habe einen Bilderupload, wo die Dateien erstmal in ein upload-Verzeichnis kommen, in welches php auch schreiben darf. Später sollten die Dateien aktiviert werden (nach vorheriger Kontrolle über deren Inhalte).

Was heißt "aktiviert" in diesem Zusammenhang? Warum prüfst Du die Datei nicht direkt beim Upload uns schiebst sie dann direkt ins richtige Verzeichnis? Entweder Du kannst in das Zielverzeichnis schreiben oder nicht. Wenn Du es später kannst kannst DU es auch direkt beim Upload, wenn Du es da nicht kannst kannst Du es auch nicht später, zumindest wüßte ich nicht wieso das so sein sollte.

Doch dazu müsste ich sie möglichst auch in eine anderes Verzeichnis schieben.
Ich wollte eigentlich nicht auf dieses Verzeichnis zugreifen.

Auf welches Verzeichnis? Du lädst die Datei hoch und verschiebst sie mit move_uploaded_file nach Prüfung in das Zielverzeichnis. Warum der Umweg über das 2. Verzeichnis?

Allerdings kann ich sie vorher nicht in mein Zielverzeichnis verschieben, da ich keine Rechte habe.

Wo willst Du die Datei denn hinschreiben wo Du mit PHP nicht reinschreiben darfst? Du kannst es natürlich nur in eines Deiner Verzeichnisse schreiben, in denen Du Schreibrechte hast. Wie gesagt verstehe ich nicht wieso das erst im 2. Anlauf klappen soll.
Solange Du das aus PHP machst wird das Script immer die Rechte Deines PHP-Scriptes haben, daher wird ein exec() hier auch scheitern.

Es ist auch nicht alleien Eine Frage der Rechte, sondern auch eine Frage des Besitzers. Vermutlich ist das das Problem. Vermutlich berfindet sich PHP oder der Apache nicht in der richtigen Gruppe um ins Home-Verzeichnis schreiben zu können. Warum willst Du das? Willst Du dei DAteien außerhalb des doc-root ablegen? Dann würde ich mir ein Verzeichnis hierfür überlegen, udn nur für dieses Verzeichnis den Besitzer, bzw. die Gruppe so zu ändern, das der Apache auch in der Gruppe enthalten ist. Danbn kannst Du auch direkt mit move_uploaded_file in dieses Verzeichnis schreiben.

Grüße
Andreas