Martin: Bilder uploaden

Hallo!

Ich möchte über ein PHP-Script dynamisch eine Bilddatenbank verwalten können. Bisher habe ich folgende Zeile eingefügt, bevor ich eine Datei-Operation vorgenommen habe:

exec("/usr/local/info-sys/cgi-bin/phpchown $SCRIPT_FILENAME $path",$t,$status);

Allerdings hilft das nun auch nicht mehr. Ich bekomme immer folgende Fehlermeldung:

Warning: move_uploaded_file(personen/person_1.jpg): failed to open stream: Permission denied in /srv/www/htdocs/web7/html/web/person_neu.php on line 97

Warning: move_uploaded_file(): Unable to move '/srv/www/htdocs/web7/phptmp/phpTclsTy' to 'personen/person_1.jpg' in /srv/www/htdocs/web7/html/web/person_neu.php on line 97

...

Da ich von CGI/PERL oder was auch immer nötig ist keine Ahnung habe, hoffe ich, dass mir jemand sagen kann, wo das Problem liegt, bzw. wie ich es umgehen kann.

mfg, Martin

  1. hallo,

    Da ich von CGI/PERL

    Das ist uninteressant.

    oder was auch immer nötig ist

    Das ist schon interessanter, es geht dir ja um PHP. Deine Fehlermeldung ist doch ziemlich eindeutig. Was steht denn in "Zeile 97" drin?

    dass mir jemand sagen kann, wo das Problem liegt

    Du kennst die "Lage des Problems" bereits: Zeile 97

    wie ich es umgehen kann.

    Gar nicht. Du sollst es nicht umgehen, sondern _lösen_.

    Grüße aus Berlin

    Christoph S.

  2. Tja, lieber Namensvetter,

    Bisher habe ich folgende Zeile eingefügt, bevor ich eine Datei-Operation vorgenommen habe:
    exec("/usr/local/info-sys/cgi-bin/phpchown $SCRIPT_FILENAME $path",$t,$status);

    Solange du dir und uns nicht verraten kannst, was diese Anweisung eigentlich macht bzw. was die Variablen $path, $t und $status für eine bedeutung haben, wird dir wahrscheinlich kaum jemand helfen können.

    Da ich von CGI/PERL oder was auch immer nötig ist keine Ahnung habe, hoffe ich, dass mir jemand sagen kann, wo das Problem liegt, bzw. wie ich es umgehen kann.

    Keine Ahnung haben und fremden Code verwenden, ohne ihn zu verstehen, ist eine denkbar ungünstige Voraussetzung.  :-(

    So long,

    Martin

  3. Hello,

    Zu allererst solltest Du uns keine Teile der Fehlermeldungen und auch nicht den Kontext unterschlagen.

    Dann solltest Du Dich entscheiden: Soll es PHP, PERL oder Linux (Windows) sein, was für die Dateiverschiebung verantwortlich zeichnet.

    In PHP würden wir dann einen Einblick in die phpinfo()-Daten benötigen. Darin kann man eigentlich (fast) alles sehen, was mit den Restriktionen zu tun hat.

    Dann benötit man noch Kenntnisse über die Eigentümerverhältnisse der Directories von Quelle um eine Aussage treffen zu können.

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      Dann benötigt man noch Kenntnisse über die Eigentümerverhältnisse der Directories von Quelle und Ziel um eine Aussage treffen zu können.

      Hat der doch das Ziel unterschlagen *zz*

      Harzliche Grüße vom Berg
      esst mehr http://www.harte-harzer.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
    2. hallo Tom,

      ähm ... gelegentlich weißt du ja ganz Vernünftiges. Aber ...

      Zu allererst solltest Du uns keine Teile der Fehlermeldungen und auch nicht den Kontext unterschlagen.

      Was meinst du mit "Kontext"? Die Fehlermeldung haben wir ja zu lesen bekommen.

      Dann solltest Du Dich entscheiden: Soll es PHP, PERL oder Linux (Windows) sein, was für die Dateiverschiebung verantwortlich zeichnet.

      Ups. Für den "Upload" ist irgendeine Technologie verantwortlich, die eine entsprechende Kommunikation herstellen kann. PHP und Perl kommen infrage, aber auch noch etliche andere. "Linux (Windows)" hat damit allerdings ziemlich genau gar nichts zu tun.

      In PHP würden wir dann einen Einblick in die phpinfo()-Daten benötigen.

      Nö. Wozu denn? Was benötigt wird, ist ein Einblick in die ominöse "Zeile 97", mehr nicht.

      Dann benötit man noch Kenntnisse über die Eigentümerverhältnisse der Directories von Quelle um eine Aussage treffen zu können.

      Jaein. Die Meldung "permission denied" könnte zwar auf ungenügende Rechte hindeuten, aber auch darauf, daß das gemeinte Verzeichnis vielleicht gar nicht existiert.

      Grüße aus Berlin

      Christoph S.

      1. Hello,

        ähm ... gelegentlich weißt du ja ganz Vernünftiges. Aber ...

        Zu allererst solltest Du uns keine Teile der Fehlermeldungen und auch nicht den Kontext unterschlagen.

        Was meinst du mit "Kontext"? Die Fehlermeldung haben wir ja zu lesen bekommen.

        Was wude versucht?
        Was sind die Rahmenbedingungen, die zu dieser Fehlermeldung geführt haben?
        Dolölte Dir als Apache-Freak doch eigentlich klar sein, dass eine Menge von Rahmenbedingungen verantwortlich sind für solche Fehler...

        Jedenfalls handelt es sich mMn nicht um eine Meldung, die PHP zu verantworten hat, wenn uns der Poster nicht etwas unterschlagen hat. Also weder open_basedir, noch safe mode.

        Dann solltest Du Dich entscheiden: Soll es PHP, PERL oder Linux (Windows) sein, was für die Dateiverschiebung verantwortlich zeichnet.

        Ups. Für den "Upload" ist irgendeine Technologie verantwortlich, die eine entsprechende Kommunikation herstellen kann. PHP und Perl kommen infrage, aber auch noch etliche andere. "Linux (Windows)" hat damit allerdings ziemlich genau gar nichts zu tun.

        Heri wurde ein Durchgriff in die Betriebssystemschicht mittels system() durchgeführt. Folglich ist das Betriebssystem verantwortlich. Allerdings wurde uns der Fehlerparameter des Betriebssystems und auch die Fehlermeldung des Betreiebssystems nicht mitgeteilt.

        In PHP würden wir dann einen Einblick in die phpinfo()-Daten benötigen.

        Nö. Wozu denn? Was benötigt wird, ist ein Einblick in die ominöse "Zeile 97", mehr nicht.

        Dann benötit man noch Kenntnisse über die Eigentümerverhältnisse der Directories von Quelle um eine Aussage treffen zu können.

        Jaein. Die Meldung "permission denied" könnte zwar auf ungenügende Rechte hindeuten, aber auch darauf, daß das gemeinte Verzeichnis vielleicht gar nicht existiert.

        Nein. Das würde eine andere Fehlermeldung geben:  "No such file or directory"

        Ich muss bemängeln, dass Du plenkst!

        Harzliche Grüße vom Berg
        esst mehr http://www.harte-harzer.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hello,

          Dolölte

          Ups, hier hat der STASI-Filter aber gepatzt

          Harzliche Grüße vom Berg
          esst mehr http://www.harte-harzer.de

          Tom

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

          Ich muss bemängeln, dass Du plenkst!

          Habbich ja gar nicht, und jetzt bin ich beleidigt, jawohl!
          Informiere dich mal bitte, was das mit dem plenken bedeutet, ich habe jtzt gar keine Lust mehr, mit dir übers Thema zu diskutieren, weil ich jetzt richtig stinkig bin, grmpf.

          Grüße aus Berlin

          Christoph S.

          1. Hello Christoph,

            Ich muss bemängeln, dass Du plenkst!

            Habbich ja gar nicht, und jetzt bin ich beleidigt, jawohl!
            Informiere dich mal bitte, was das mit dem plenken bedeutet, ich habe jtzt gar keine Lust mehr, mit dir übers Thema zu diskutieren, weil ich jetzt richtig stinkig bin, grmpf.

            Das ist mal wieder ein Beispiel für die unbeobachtete Zwischenzeit von WIKI...

            Auch da sind die Rrahmenbedingungen maßgebend *ggggggggg*

            Harzliche Grüße vom Berg
            esst mehr http://www.harte-harzer.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. hallo Tom,

              weil ich jetzt richtig stinkig bin, grmpf.
              Das ist mal wieder ein Beispiel für die unbeobachtete Zwischenzeit von WIKI...

              Ha, du kennst mich nicht. Ich wollte dir auf ganz sanfte Weise die Möglichkeit eröffnen, die Wiki-Seite über stinkig zu erstellen.

              ... Rrahmenbedingungen...

              ahso, jaja, ich weiß schon. Meine Rahmenbedingungen sind bedauerlicherweise noch für die nächsten zwei Monate holunderweinfrei, der "Neue" ist grade mal vor zwei Tagen angesetzt worden und blubbert noch heftig.

              Grüße aus Berlin

              Christoph S.

            2. Hello Christoph,

              stinkig bin, grmpf.

              Das ist mal wieder ein Beispiel für die unbeobachtete Zwischenzeit von WIKI...

              und mein bescheidener Ansatz ist schon wieder gelöscht.

              Wie soll da jemals Wissensmanagement entstehen, wenn schon der Versuch einer Problemdefinition wieder gelöscht wird. Die WIKI-Typen sind mMn auch manchmal zu rigide...

              Harzliche Grüße vom Berg
              esst mehr http://www.harte-harzer.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
  4. also:

    1. was in zeile 97 steht, ist ja wohl nicht so schwer zu erraten: eine funktion zur dateimanipulation. in diesem fall move_uploaded_file(). es könnte aber genausogut rename() etc sein - also denke ich nicht, dass das wichtig ist.

    2. die beiden variablen $status und $t, die dem cgi-touch übergeben werden, nehmen eventuelle fehlermeldungen entgegen. wer sich auskennt, sollte das eigentlich wissen und nicht stattdessen mir unterstellen, ich würde fremden code verwenden ohne darüber nachzudenken! ich hab alles bis auf diese eine zeile verfasst. und die hab ich von http://www.id.unizh.ch/publications/zinfo/zinfo0008/upload.php

    3. der server (apache, php 4.3.3) ist auf "safe-mode" eingestellt, weshalb es eigentlich funktionieren müsste. die rechte des verzeichnisses sind 777 (also alle)

    4. in folge der diskussion, die hier im gange ist, nehme ich an, dass hier wohl lieber gestritten als geholfen wird

    1. hi,

      1. in folge der diskussion, die hier im gange ist, nehme ich an, dass hier wohl lieber gestritten als geholfen wird

      und in folge deiner ausdruckweise nehme ich an, dass man dich dein problem lieber selber lösen lassen sollte.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. hallo Martin,

      1. was in zeile 97 steht [...] dass das wichtig ist.

      Interessanter Quellcode.

      ist ja wohl nicht so schwer zu erraten: eine funktion zur dateimanipulation. in diesem fall move_uploaded_file(). es könnte aber genausogut rename() etc sein

      Nein, es könnte nicht genausogut irgendwas andres sein. Und du sollst nicht um den heißen Brei herumreden, sondern gefälligst _genau_ deinen Code angeben, sonst kriegst du eben nichts Hilfreiches zurück.

      also denke ich nicht

      In diesem Fall sollst du nicht unsinniges Zeugs denken, sondern ganz einfach den Code dieser Zeile posten. Was ist daran für dich so unverständlich?

      1. die beiden variablen $status und $t, die dem cgi-touch übergeben werden, nehmen eventuelle fehlermeldungen entgegen.

      Schön. Wie sind sie in deinem Script notiert?

      wer sich auskennt, sollte das eigentlich wissen

      Nö. Eine Variable "$t" gibts bei mir nirgends. Seit Jahren nicht. Fehlermeldungen fange ich allerdings auch ab.

      und nicht stattdessen mir unterstellen, ich würde fremden code verwenden ohne darüber nachzudenken!

      Es _ist_ darüber nachzudenken, da du dich ja so kensequent weigerst, deinen Code anzugeben. Was erwartest du denn? Was sollen unsere Glaskugeln denn herausfinden?

      ich hab alles bis auf diese eine zeile verfasst

      Welche Zeile? Meinst du tatsächlich "Zeile 97"?

      und die hab ich von http://www.id.unizh.ch/publications/zinfo/zinfo0008/upload.php

      Wenn ich mir den Quelltext dieser Url anschaue, sehe ich als "Zeill 97" eine Leerzeile. Die dürfte dir doch eigentlich keine Probleme bereiten.

      1. der server (apache, php 4.3.3) ist auf "safe-mode" eingestellt

      Apache hat keinen "safe-mode", für PHP gibts allerdings sowas.

      weshalb es eigentlich funktionieren müsste

      Was müßte jetzt eigentlich funktionieren  -  daß du kapierst, wie du hier Fragen stellen solltest?

      die rechte des verzeichnisses sind 777 (also alle)

      Das ist relativ wurscht.

      1. in folge der diskussion, die hier im gange ist, nehme ich an, dass hier wohl lieber gestritten als geholfen wird

      Deine Annahmetechnik läßt stark zu wünschen übrig.

      Grüße aus Berlin

      Christoph S.