Thomas Wegner: move file --> permission denied --- und wieso???

Hallo mal wieder,

folgende Situation:
Windows 2000
Apache irgendwas (gerade heruntergeladen)
PHP 4.2

versuche nun mit folgendem Script:
 if (is_uploaded_file($_FILES["fileupload"]["tmp_name"]))
 {
  move_uploaded_file($_FILES["fileupload" ["tmp_name"], "C:\temp\");
 }

die aus einem formular stammende Datei auf dem Server zu verschieben. Die Fehlermeldung die ich bekomme lautet:
Warning: Unable to create 'C:\temp': Permission denied in C:\php\files\uploaded.php on line 18

Line 18 ist die move_... Zeile!
Auf dem Verzeichnis C:\temp\ hat mittlerweile jeder vollzugriff. Der Apache service arbeitet mit dem System-Account.

Kann mir jemand weiterhelfen? bittebittebitte... bin verzweifelt!

Danke im voraus!

-ich

  1. Hallo,

    versuche nun mit folgendem Script:
    if (is_uploaded_file($_FILES["fileupload"]["tmp_name"]))
    {
      move_uploaded_file($_FILES["fileupload" ["tmp_name"], "C:\temp\");
    }

    .. steht da wirklich C:\temp\ (mit 2 Backslashes am Ende) in deinem Script?

    Viele Grüße,
    Horst

    1. Hallo,

      versuche nun mit folgendem Script:
      if (is_uploaded_file($_FILES["fileupload"]["tmp_name"]))
      {
        move_uploaded_file($_FILES["fileupload" ["tmp_name"], "C:\temp\");
      }

      .. steht da wirklich C:\temp\ (mit 2 Backslashes am Ende) in deinem Script?

      Viele Grüße,
      Horst

      Habe es schon mit einem und 2 backslashs ausprobiert! Ebenfalls versuchte ich es mit einer URL ("/seite/verzeichnis/"). Hat auch nicht funktioniert.

  2. Moin,

    move_uploaded_file($_FILES["fileupload" ["tmp_name"], "C:\temp\");

    Wenn du schon Backslashes benutzt, solltest du sie in jedem Fall maskieren, also mit einem Backslash schützen. Das hier dürfte nicht funktionieren, da \t für ein Tabulatorzeichen steht, siehe http://www.php.net/manual/de/language.types.string.php#AEN3735.

    Und weiterhin: Die Doku (http://www.php.net/manual/de/function.move-uploaded-file.php) sagt "wird sie zum in destination bezeichneten Dateinamen verschoben", das Schlüsselwort ist hier Dateiname. Die Zeile würde (wenn der fehlende \ eingefügt ist) versuchen eine Datei C:\temp anzulegen und die hochgeladene Datei dorthin zu schreiben, was logischerweise nicht geht, weil C:\temp schon existiert. (Die fehlende ] pack' ich mal in die Kategorie Abtippfehler.)

    move_uploaded_file($_FILES["fileupload"] ["tmp_name"], "C:\temp\einhuebscherdateiname");
    dürfte also gehen, pass aber auf, dass sich die Skripte nicht gegenseitig stören, falls es mehrmals gleichzeitig oder nacheinander aufgerufen wird.

    --
    Henryk Plötz
    Grüße von der Ostsee

    1. Moin,

      move_uploaded_file($_FILES["fileupload" ["tmp_name"], "C:\temp\");

      Wenn du schon Backslashes benutzt, solltest du sie in jedem Fall maskieren, also mit einem Backslash schützen. Das hier dürfte nicht funktionieren, da \t für ein Tabulatorzeichen steht, siehe http://www.php.net/manual/de/language.types.string.php#AEN3735.

      Und weiterhin: Die Doku (http://www.php.net/manual/de/function.move-uploaded-file.php) sagt "wird sie zum in destination bezeichneten Dateinamen verschoben", das Schlüsselwort ist hier Dateiname. Die Zeile würde (wenn der fehlende \ eingefügt ist) versuchen eine Datei C:\temp anzulegen und die hochgeladene Datei dorthin zu schreiben, was logischerweise nicht geht, weil C:\temp schon existiert. (Die fehlende ] pack' ich mal in die Kategorie Abtippfehler.)

      move_uploaded_file($_FILES["fileupload"] ["tmp_name"], "C:\temp\einhuebscherdateiname");
      dürfte also gehen, pass aber auf, dass sich die Skripte nicht gegenseitig stören, falls es mehrmals gleichzeitig oder nacheinander aufgerufen wird.

      --
      Henryk Plötz
      Grüße von der Ostsee

      Oh man oh man oh man..... es funktioniert!!!!!!!!

      Ich bedanke mich vielmals!

      • Gruesse aus dem schnoeden Koeln

      Thomas