Hallo,
Post by Christoph M. BeckerPost by Jan Novakich baue gerade an einer upload Funktion. System ist ein 9.2 Debian.
File Uploads landen in
/tmp/systemd-private-1b5621511e5e4505814fd887261174e7-apache2.service-iNOxtK/tmp
Leider zeigt der aber
$_FILES["tmp_name"] auf /tmp/phpwPsrev
wo das File nicht liegt.
Wie komme ich an mein File im temp systemd Verzeichnis?
Grundsätzlich sollte man auf gerade hoch geladene Dateien nicht direkt
zugreifen, sondern immer nur per move_uploaded_file()[1] (oder
is_uploaded_file()). Im PHP-Handbuch wird auch ein move_uploaded_file()
Beispiel gezeigt. Wenn das bei dir nicht funktioniert, dann schau mal
nach upload_tmp_dir[2].
[1] <http://www.php.net/manual/de/function.move-uploaded-file.php>
Ich nutze natürlich die move_uploaded_file Funktion.
Laut PHP Doku [1] :
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = basename($_FILES["pictures"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
Und hier liegt das Problem:
in $_FILES["pictures"]["tmp_name"] (um in obigem Beispiel zu bleiben)
steht nicht der richtige temp Pfad, somit kann er die Datei nicht
verschieben.
In meinem Fall ist der reale temp Pfad der lange systemd Pfad, aber in
[tmp_name] steht nur der kurze Pfsd, z.B. /tmp/phpwPsrev
EDIT (und Problem gelöst):
Das Problem lag wohl daran, dass ich - zu Testzwecken - die Dateien nach
/tmp kopieren wollte (als Zielverzeichnis). Das scheint nicht zu gehen.
Wenn ich als Zielverzeichnis etwas ausserhalb von /tmp wähle,
funktioniert es.
Jan
Post by Christoph M. Becker[2] <http://www.php.net/manual/de/ini.core.php#ini.upload-tmp-dir>