Sabine: Dateirecht nach upload falsch

Hallo!

Folgendes Problem ist bei mir aufgetreten: ich lade ein Bild mit PHP in einen Ordner hoch (der Dateiname wird in einer Datenbank gespeichert). Doch ansehen kann ich mir das Bild nicht - und es exisitert wirklich im angegebenen Verzeichnis. Grund: die Rechte stimmen nicht, ich erhalte nach dem Upload nur Lese- und Schreibrechte für den Owner.
Gibt es eine Möglichkeit mit PHP die Rechte für die raufzuladende Datei mitzusetzen? Ich habe leider nix gefunden oder falsch gesucht.

Hier das Skript (sehr einfach, die Variable 'datei' wird von einem Formular übernommen):

  
move_uploaded_file($_FILES['datei']['tmp_name'], "../xxx/".$_FILES['datei']['name']);  
echo "Das Bild wurde erfolgreich nach xxx/".$_FILES['datei']['name']." hochgeladen!";  

Mit der Bitte um Hilfe
Sabine

--
Nichtstun ist besser, als mit vielem Abmühen nichts zu schaffen (Laotse)
  1. jow,

    per HHTP-Upload haben Dateien die Rechte desjenigen Users unter dessem Account der Web-Server läuft.

    --roro

    1. Hi!

      per HHTP-Upload haben Dateien die Rechte desjenigen Users unter dessem Account der Web-Server läuft.

      Das heißt ich muss eine andere Lösung für den Upload finden??? Welche? Sonst kann ich nichts tun?
      Sabine

      --
      Nichtstun ist besser, als mit vielem Abmühen nichts zu schaffen (Laotse)
      1. Hello,

        per HHTP-Upload haben Dateien die Rechte desjenigen Users unter dessem Account der Web-Server läuft.

        Das heißt ich muss eine andere Lösung für den Upload finden??? Welche? Sonst kann ich nichts tun?
        Sabine

        Das Script wird durchaus in der Lage sein, dem Webserver die Leserechte zu erteilen oder auch Jedermann, wenn es nicht anders geht.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. Hi Tom!

          Das Script wird durchaus in der Lage sein, dem Webserver die Leserechte zu erteilen oder auch Jedermann, wenn es nicht anders geht.

          Und wenn du mir jetzt noch verrätst, wie dieses Script aussehen muss, wäre ich überglücklich!
          lg
          Sabine

          --
          Nichtstun ist besser, als mit vielem Abmühen nichts zu schaffen (Laotse)
          1. Hi Tom!

            Das Script wird durchaus in der Lage sein, dem Webserver die Leserechte zu erteilen oder auch Jedermann, wenn es nicht anders geht.

            Und wenn du mir jetzt noch verrätst, wie dieses Script aussehen muss, wäre ich überglücklich!

            Ja, siehste Tom, hättste da bloß nichts gesagt ;-)

            SCNR, --roro

          2. Hello,

            Und wenn du mir jetzt noch verrätst, wie dieses Script aussehen muss, wäre ich überglücklich!

            Welche Datei(system)operationen hast Du denn schon ausprobiert?

            chmod()

            chgrp()

            umask()

            ?

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau

            1. Hi!

              Welche Datei(system)operationen hast Du denn schon ausprobiert?

              chmod()

              chgrp()

              umask()

              ?

              Tja, um ehrlich zu sein gar keine, weil ich nicht wusste, dass ich die anwenden kann. Entweder ich bin zu blöd zum Suchen im WWW oder ich suche falsch.
              Kann ich mit PHP einfach so ein chmod durchführen? Es würde auch schon ein Link zu einer entsprechenden Erklärung reichen.
              Vielen Dank
              Sabine

              --
              Nichtstun ist besser, als mit vielem Abmühen nichts zu schaffen (Laotse)
              1. Hello,

                Welche Datei(system)operationen hast Du denn schon ausprobiert?

                chmod() http://www.php.net/manual/en/function.chmod.php

                chgrp() http://www.php.net/manual/en/function.chgrp.php

                umask() http://www.php.net/manual/en/function.umask.php

                ?
                Tja, um ehrlich zu sein gar keine, weil ich nicht wusste, dass ich die anwenden kann.

                Dann schau Dir die Dateifunktionen und die Directoryfunktionen von PHP bitte an
                http://www.php.net/manual/en/ref.filesystem.php
                http://www.php.net/manual/en/ref.dir.php

                Entweder ich bin zu blöd zum Suchen im WWW oder ich suche falsch.

                Wo hast Du denn bisher gesucht?

                Kann ich mit PHP einfach so ein chmod durchführen?

                Im Prinzip ja, in der Praxis solltest Du sehr genau überlagen, welche Rchte Du wem gibst.

                Es würde auch schon ein Link zu einer entsprechenden Erklärung reichen.

                Bitteschön, Dein Wunsch sei mir Befehl.
                Aber bitte nun auch lesen.
                Jeder, der sich mit Upload-Scripten beschäftigt, sollte ich außerdem mit

                • realer MIME-Type einer Datei
                • Server Hijacking

                beschäftigen.

                Du musst unbedingt verhindern, dass Dir Files untergeschoben werden, die Du nicht haben willst, oder welche an eine Position kopiert werden, an der Du sie nicht haben willst.

                Harzliche Grüße vom Berg
                http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau

                1. Hallo Tom!

                  Herzlichen Dank, beginne sofort mit dem Lesen.
                  Den Upload kann man zwar nur durchführen, wenn man vorher in ein Passwortgeschütztes Verzeichnis kommt, aber ich werde mich natürlich über die Sicherheitsrisiken informieren - wenn du mich schon so nett darauf hinweist!

                  Liebe Grüße
                  Sabine

                  --
                  Nichtstun ist besser, als mit vielem Abmühen nichts zu schaffen (Laotse)
    2. Hello,

      per HHTP-Upload haben Dateien die Rechte desjenigen Users unter dessem Account der Web-Server läuft.

      Nö, dieselben, unter dem der PHP-Prozess läuft.

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

  2. Hallo,

    ich mach das immer so:

    $Pfade_in_DB = array();
        foreach ($_FILES as $Artikelbild => $File)
        {
            if ($File['error'] == 0)
            {
                $TempName   = pathinfo($File['tmp_name']);
                $RealName   = pathinfo($File['name']);

    $FileName   = $TempName['basename'].'.'.$RealName['extension'];

    $Pfade_in_DB[$Artikelbild] = '/dozenten/'.$FileName;

    move_uploaded_file(
                    $File['tmp_name'],
                    $_SERVER['DOCUMENT_ROOT'] . '/' .$Pfade_in_DB[$Artikelbild]
                );
                chmod($_SERVER['DOCUMENT_ROOT'] . '/' .$Pfade_in_DB[$Artikelbild] , 0777);
            }
        }

    Gruß,
    Maus