michael loos: chmod() benutzen???

hallo forumler,

ich würde gern ein script basteln, mit dem man einfache gifs oder jpgs auf eine seite uploaden kann.

dazu habe ich mir ein verzeichnis angelgt, in dem die bilder später stehen sollen und auch von allen besuchern angesehen werden können.

upload und verschieben dahin bekomme ich hin, was mir noch nicht so ganz klar ist: ich muß doch bestimmte rechte vergeben für das verzeichnis, oder?
ich habe mal rumgelesen, das müßte ja mit chmod() gehen?
wäre "664" die richitge stufe? -> besitzer: rw- gruppe: rw- besucher r--

meine frage: kann ich diese rechte nur für eine datei vergeben oder auch für ein ganzes verzeichnis?
und vorallem: wie sag ich das meinem verzeichnis? ;-)

reicht das, wenn ich einfach ein klitzekleines php-script in das verzeichnis lade und ausführe?
also z.b. chmod ("referenzen/pressespiegel", 664);?
und die datei danach wieder lösche?

vielen dank für eure hilfe !!!!

grüße michael

  1. Hi,

    wäre "664" die richitge stufe? -> besitzer: rw- gruppe: rw- besucher r--

    mache Dir eins klar: Der Zugriff erfolgt nicht "durch den Besucher", sondern durch den Webserver. Wie dieser für das Filesystem heißt, kann ich Dir nicht sagen - möglicherweise wwwrun, vielleicht ist es auch Dein Benutzername, oder etwas ganz anderes. Nur dieser Name ist entscheidend, und natürlich der Besitzer der jeweiligen Datei - wenn vom Server aus die Daten geschrieben werden, sollte es identisch sein.

    Also: Setze die Rechte so, dass der Server darauf zugreifen kann.

    meine frage: kann ich diese rechte nur für eine datei vergeben oder auch für ein ganzes verzeichnis?

    chmod und chown können/machen beides; ein Verzeichnis ist auch "nur" ein Eintrag im Filesystem. In PHP hast Du übrigens nur eine Schnittstelle dazu, nicht die Funktion selbst.

    und vorallem: wie sag ich das meinem verzeichnis? ;-)

    "Just do it."

    Cheatah

    1. Hi cheatah,

      danke erstmal für deine antwort.
      jetzt weiß ich auch wie dsa mit den rechten ist...
      habe mich schon gewundert, daß ich rechte für meine besucher vergeben soll....!! ;-)

      also ich habe mir jetzt einfach mal eine klitzekleine datei gebastelt und hochgeladen.

      <?php
      chmod ("is/htdocs/29799/www.baseball-cheerleading.de/Sites/referenzen/presse_artikel", 664);
      ?>

      sonst gar nichts... wenn ich die datei aber aufrufe,
      dann bekomme ich nur eine fehlermeldung, das es keine solche datei oder verzeichnis gäbe.
      aber das gibt es definitiv, und die groß- kleinschreibung stimmt auch ??? und der pfad mit dem is/htdocs... müßte auch stimmen?
      hab ich irgendwo einen slash vergessen oder sonstwas???

      vielen dank, michael

      1. Moin!

        <?php
        chmod ("is/htdocs/29799/www.baseball-cheerleading.de/Sites/referenzen/presse_artikel", 664);
        ?>

        sonst gar nichts... wenn ich die datei aber aufrufe,
        dann bekomme ich nur eine fehlermeldung, das es keine solche datei oder verzeichnis gäbe.

        Dann ist es kein Rechteproblem. Waere es eines, dann kaeme die Meldung 403 Forbidden. 404 Not found heisst, dass da wirklich nichts ist. Daher duerfte der Fehler wohl tatsaechlich eher woanders liegen.

        aber das gibt es definitiv, und die groß- kleinschreibung stimmt auch ??? und der pfad mit dem is/htdocs... müßte auch stimmen?
        hab ich irgendwo einen slash vergessen oder sonstwas???

        Weisst Du denn, welches das aktuelle Verzeichnis ist, wenn Du obiges ausfuehrst? Falls nicht, kannst Du eine relative Pfadangabe natuerlich vergessen. Bei CGI ist es z.B. so, dass das aktuelle Verzeichnis undefiniert ist. Wie es bei PHP ist, weiss ich nicht.

        So long

        --
        Falscher oder fehlender Kaffee. Benutzer angehalten.

        1. Dann ist es kein Rechteproblem. Waere es eines, dann kaeme die »»Meldung 403 Forbidden. 404 Not found heisst, dass da wirklich nichts ist. Daher duerfte der Fehler wohl tatsaechlich eher woanders liegen.

          hmm... diese art von fehler (403, 404) ist es tatsächlich nicht.
          also , die genaue meldung ist folgende:

          Warning: chmod failed: No such file or directory in /is/htdocs/29799/www.baseball-cheerleading.de/Sites/referenzen/chmod.php on line 3

          Weisst Du denn, welches das aktuelle Verzeichnis ist, wenn Du obiges ausfuehrst? Falls nicht, kannst Du eine relative Pfadangabe natuerlich vergessen. Bei CGI ist es z.B. so, dass das aktuelle Verzeichnis undefiniert ist. Wie es bei PHP ist, weiss ich nicht.

          das aktuelle verzeichnis aus dem ich die chmod.php ausführe?
          naja ich habe sie in referenzen einkopiert (s.o.)
          spielt das denn eine rolle? also ich habe eigetnlich auch
          anfangs einfach nur /presse_artikel als pfad angegeben (presse_artikel ist ein unterverzeichnis von referenzen).
          aber das hat auch nicht gefunzt...
          also ich hab echt keine ahnung....???

          1. Warning: chmod failed: No such file or directory in /is/htdocs/29799/www.baseball-cheerleading.de/Sites/referenzen/chmod.php on line 3

            Ach so, die Meldung kam von PHP selbst, na sag's doch. ;-)

            das aktuelle verzeichnis aus dem ich die chmod.php ausführe?
            naja ich habe sie in referenzen einkopiert (s.o.)

            in referenzen einkopiert? haeh?

            spielt das denn eine rolle?

            In Deinem Posting davor hattest Du keinen / am Anfang des Pfades. Da haette es selbstverstaendlich eine Rolle gespielt.

            anfangs einfach nur /presse_artikel als pfad angegeben (presse_artikel ist ein unterverzeichnis von referenzen).
            aber das hat auch nicht gefunzt...
            also ich hab echt keine ahnung....???

            Aeh.. Dir ist aber bekannt, dass dieses / das Root des Dateisystems ist und NICHT das Document root Deines Webservers, ja?

            So long

            --
            Falscher oder fehlender Kaffee. Benutzer angehalten.

            1. au weia, jetzt mach mich mal nicht durcheinander...;-))

              also mal ganz langsam:

              der pfad zu meinen dateien auf dem webserver ist
              /is/htdocs/29799/www.baseball-cheerleading.de/....

              Aeh.. Dir ist aber bekannt, dass dieses / das Root des Dateisystems ist und NICHT das Document root Deines Webservers, ja?

              muß ich die chmod.php jetzt in das root meines dateisystems kopieren oder in das root des webservers?
              oder in welches verzeichnis sonst??? ist das denn nicht eigentlich egal, in welches verzeichnis ich die datei kopiere und ausführe, solange der pfad zu dem presse_archiv verzeichnis stimmt?

              vielen dank für deine geduld, bin gerade ein wenig verwirrt ;-))))

              grüße michael

              1. Hi,

                der pfad zu meinen dateien auf dem webserver ist
                /is/htdocs/29799/www.baseball-cheerleading.de/....

                sher gut - merken und verwenden.

                muß ich die chmod.php jetzt in das root meines dateisystems kopieren oder in das root des webservers?

                Die chmod.php wird über HTTP aufgerufen und muss daher in einem per HTTP zugänglichen Bereich liegen. Wenn dies "/is/htdocs/29799/www.baseball-cheerleading.de/irgendwo/ganz/tief/unten/chmod.php" ist, ist das auch wurscht.

                ist das denn nicht eigentlich egal, in welches verzeichnis ich die datei kopiere und ausführe, solange der pfad zu dem presse_archiv verzeichnis stimmt?

                Ja - nur muss dieser Pfad eben stimmen. Es ist _nicht_ der Pfad, den Du in der URL siehst, sondern einer, der auf o.g. Dateipfad basiert.

                vielen dank für deine geduld, bin gerade ein wenig verwirrt ;-))))

                Wir sind für beides bekannt *g*

                Cheatah

                1. aahhhhh..... !!!
                  so langsam komm ich mir echt vor wie ein vollidiot.

                  also:

                  jetzt scheint zumindest mal der pfad zu stimmen,
                  denn jetzt habe ich eine andere Fehlermeldung *LOL*

                  meine tolle fehlermeldung:

                  Warning: chmod failed: Operation not permitted in /is/htdocs/29799/www.baseball-cheerleading.de/Sites/referenzen/chmod.php on line 3

                  mein quellcode:

                  <?php
                  chmod ("presse_artikel", 664);
                  ?>

                  das verzeichnis findet er jetzt, da die datei in referenzen liegt.
                  und presse_artikel ein unterverzeichnis von referenzen ist.
                  wenn ich die datei aufrufe
                  (----> http://www.baseball-cheerleading.de/Sites/referenzen/chmod.php )
                  dann bekomme ich die obige fehlermeldung... wiso ???
                  ich meine der bereich ist ja für HTTP zugänglich, oder?
                  das kann doch nicht sooo schwer sein *heul* ???

                  grüße michael

                  1. Hi,

                    aahhhhh..... !!!

                    keine Sorge, wir sind keine Ärzte *g*

                    so langsam komm ich mir echt vor wie ein vollidiot.

                    Das vergeht. In Kürze _weißt_ Du es. Neiiiin, war ein Scherz! :-)

                    jetzt scheint zumindest mal der pfad zu stimmen,
                    denn jetzt habe ich eine andere Fehlermeldung *LOL*

                    Na, das ist doch schon mal was!

                    Warning: chmod failed: Operation not permitted in /is/htdocs/29799/www.baseball-cheerleading.de/Sites/referenzen/chmod.php on line 3

                    Wem gehört die Datei presse_artikel, und unter welchem Usernamen läuft der Webserver? Nicht jeder Unix-User darf beliebig die Rechte von Dateien verändern. Das darf nur root und der Besitzer der Datei (kurz gesagt).

                    ich meine der bereich ist ja für HTTP zugänglich, oder?

                    Offenbar, es wird ja schließlich ausgeführt :-)

                    das kann doch nicht sooo schwer sein *heul* ???

                    Der ganz alltägliche Wahnsinn. Mit sowas schlägt man sich ständig rum - man gewöhnt sich dran :-)

                    Cheatah

                    1. Das vergeht. In Kürze _weißt_ Du es. Neiiiin, war ein Scherz! :-)

                      ..das denk ich mir auch gerade....

                      Warning: chmod failed: Operation not permitted in /is/htdocs/29799/www.baseball-cheerleading.de/Sites/referenzen/chmod.php on line 3

                      Wem gehört die Datei presse_artikel, und unter welchem Usernamen läuft der Webserver? Nicht jeder Unix-User darf beliebig die Rechte von Dateien verändern. Das darf nur root und der Besitzer der Datei (kurz gesagt).

                      also presse_artikel ist keine datei, das ist ein verzeichnis.
                      in dem verzeichnis sollen gescannte artikel hochgeladen werden, die sich ein besucher dann im "original" ansehen kann...
                      außerdem ist dieser verdammte webspace MIR, damit will ich machen können, was ich will ;-))
                      Nein , im Ernst, ich habe dasselbe mal mit WS_FTP_Pro gemacht,
                      damit konnte ich easy die berechtigungen festlegen.
                      ich dachte nur (selber schuld) ich mach es wenigstens EINMAL zu fuß mit einem "skript" bevor ich alles mit ws_ftp_pro zusammenklicke...
                      wie kann ich rausbekommen unter welchem usernamen der server läuft?
                      und das verzeichnis gehört mir, ich habs ja erstellt?

                      Offenbar, es wird ja schließlich ausgeführt :-)

                      wenigstens etwas...

                      grüße michael *seufz*

                      1. Hi,

                        Wem gehört die Datei presse_artikel, und unter welchem Usernamen läuft der Webserver? Nicht jeder Unix-User darf beliebig die Rechte von Dateien verändern. Das darf nur root und der Besitzer der Datei (kurz gesagt).

                        also presse_artikel ist keine datei, das ist ein verzeichnis.

                        das ist chmod so ziemlich egal... Filesystem-Node ist Filesystem-Node.

                        außerdem ist dieser verdammte webspace MIR, damit will ich machen können, was ich will ;-))

                        *g* Auch das ist chmod egal :-)

                        Nein , im Ernst, ich habe dasselbe mal mit WS_FTP_Pro gemacht,
                        damit konnte ich easy die berechtigungen festlegen.

                        Der FTP-Server meldet Dich dem Filesystem i.d.R. nicht mit dem gleichen Namen, wie es der HTTP-Server tut. Es sind zwei unterschiedliche Systeme, die auch unterschiedlich auftreten. Hier ist also relevant, als welcher Besitzer Du von FTP aus giltst - und der Apache-User damit kompatibel ist.

                        wie kann ich rausbekommen unter welchem usernamen der server läuft?

                        Den Provider fragen. Oder mittels ps auxw | grep ... geschickt suchen, einen Telnet- oder SSH-Zugang vorausgesetzt.

                        und das verzeichnis gehört mir, ich habs ja erstellt?

                        Wer ist "mir"? wwwrun, ftpuser, nobody, deinaccountname...?

                        Cheatah

                      2. Hi,

                        und das verzeichnis gehört mir, ich habs ja erstellt?

                        deshalb darfst _Du_ es ja auch per FTP oder was auch
                        immer ändern.

                        Die Frage ist aber, ob _Dein PHP-Skript_ das auch darf!
                        Denn unter welcher Berechtigung _das_ ausgeführt wird,
                        entscheidet die Konfiguration Deines Webservers!
                        Das _kann_ ebenfalls Deine Benutzerkennung sein (dann
                        aber hättest Du vermutlich Dein Problem nicht); es kann
                        jedoch genauso gut eine fremde Benutzerkennung sein -
                        eben diejenige, unter welcher der Webserver läuft.

                        Daß Du der Besitzer der Datei bist, welche Dein PHP-
                        Skript speichert, bedeutet noch lange nicht, daß der
                        PHP-Interpreter, der Dein Skript ausführt, auch unter
                        Deiner Kennung läuft und Deine Berechtigungen hat.
                        Im Normalfall ist es sogar definitiv _nicht_ so - man
                        kann jedoch Zusatz-Software installieren (suexec etc.),
                        welche das bewirkt.
                        Dein Provider wird Dir all das exakt beantworten
                        können, was wir hier bestenfalls erraten müßten.

                        Viele Grüße
                              Michael