Thomas: Erlaubniss für copy()

hallo,

Ich habe auf meiner page ein upload script mit php erstellt, doch nun sagt es

Warning: copy(blabla.txt): failed to open stream: Permission denied in /home/www/****/html/files/dateien.php on line 24

wie kann ich diesen fehler beheben.

lg thomas

  1. Hello,

    Ich habe auf meiner page ein upload script mit php erstellt, doch nun sagt es

    Warning: copy(blabla.txt): failed to open stream: Permission denied in /home/www/****/html/files/dateien.php on line 24

    wie kann ich diesen fehler beheben.

    Stelle als erstes fest, ob PHP im Safe-Mode läuft.
    Dann sehen wir weiter :-)

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

    Tom

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

    1. Hello,

      Ich habe auf meiner page ein upload script mit php erstellt, doch nun sagt es

      Warning: copy(blabla.txt): failed to open stream: Permission denied in /home/www/****/html/files/dateien.php on line 24

      wie kann ich diesen fehler beheben.

      Stelle als erstes fest, ob PHP im Safe-Mode läuft.
      Dann sehen wir weiter :-)

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

      Tom

      hmmm. wie findet man das raus..?

      lg

      1. Moin!

        Hello,

        Ich habe auf meiner page ein upload script mit php erstellt, doch nun sagt es

        Warning: copy(blabla.txt): failed to open stream: Permission denied in /home/www/****/html/files/dateien.php on line 24

        wie kann ich diesen fehler beheben.

        Stelle als erstes fest, ob PHP im Safe-Mode läuft.
        Dann sehen wir weiter :-)

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

        Tom

        hmmm. wie findet man das raus..?

        lg

        Wenn du über PHP viel INFO wissen willst - welche Funktion könnte wohl gemeint sein?

        PS: Wenn jeder das komplette Zitat aller Vorposter stehen lassen würde, würde man spätestens ab der dritten Antwort kaum noch was selber schreiben können, weil die Textmenge hier begrenzt ist. Also bitte kein TOFU machen!

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. hallo..

          oke klar...

          ist das gemeint..??:

          file_uploads On On

          lg

          1. Hello,

            ist das gemeint..??:

            file_uploads On On

            Nein, es war gemeint, dass Du nach dem "Safe-Mode" schaust... :-)

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

            Tom

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

            1. safe_mode Off On
              safe_mode_exec_dir /home/www/empty/ no value
              safe_mode_gid Off Off
              safe_mode_include_dir no value no value

              das ist es nun...??

              was bedeutet das nun..?

              1. Hello,

                safe_mode Off On
                safe_mode_exec_dir /home/www/empty/ no value
                safe_mode_gid Off Off
                safe_mode_include_dir no value no value

                das ist es nun...??
                was bedeutet das nun..?

                Jawoll, wie vermutet. Das wird es sein.
                Nun müssen wir mal versuchen, zu rekapitulieren, wie Du Deine Scripte und Verzeichnisse auf den Server bekommen hast, wem sie gehören, und wie die Dateien (die Uploads) auf den Server gelangen...

                Der Safe-Mode ist eine mMn zum Teil reperaturbedürftige Maßnahme von PHP, durch die versucht werden sollte, dass nur Berechtigte auf bestimmte Dateien zugreifen.

                Als Berechtigte gelten:
                  - der Eigentümer der Datei, wenn der Eigentümer des zugreifenden Scriptes identisch ist
                  - Der Eigentümer des Verzeichnisses, in dem die Datei liegt, wenn der Eigentümer des
                    zugreifenden Scriptes identisch ist.

                Wer ist der Eigentümer des Scriptes?
                Wer ist der Eigentümer der hochgeladenen Datei?
                Wer ist der Eigentümer des Verzeichnisses, in das die Datei kopiert werden soll?

                Wenn wir diese Fragen geklärt haben, können wir einige Strategien zur Umgehung der Hindernisse entwerfen.

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

                Tom

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

                1. Oke, dann mal los.

                  Ich bin der Eigentümer des Scriptes, ich habe es selbst geschrieben und via FTP server auf meinen Server geladen. Dort soll es die Daten von einem Computer auf den Server laden und dauerhaft speichern.(Mit der Funktion copy()). Ich denke ich muss irgendwo im Script die FTP-Daten eingeben, damit die Daten auf den Server galaden werden.

                  LG

                  1. Hello,

                    Ich bin der Eigentümer des Scriptes, ich habe es selbst geschrieben und via FTP server auf meinen Server geladen. Dort soll es die Daten von einem Computer auf den Server laden und dauerhaft speichern.(Mit der Funktion copy()). Ich denke ich muss irgendwo im Script die FTP-Daten eingeben, damit die Daten auf den Server galaden werden.

                    Ok:
                    (wwwrun steht für den Apachen)

                    Verzeichnis/Datei                Eigentümer            warum

                    Webspace und Document Root       Thomas                Provider hat es so eingerichtet
                    Scripte im Document Root         Thomas                Weil der FTP so eingerichtet ist
                    Verzeichnis, in das              wwwrun                Weil es der Apache erzeugt hat
                      das Bild soll
                    Hochgeladenen Datei              wwwrun                Weil es so bestimmt ist

                    Nun versucht also ein Script, das Thomas gehört, eine Datei zu bewegen, die wwwrun gehört und zwar in ein Verzeichnis, das ebenfalls wwwrun gehört. Leider passt der Eigentümer des Scriptes nicht zu Quelle und Ziel.

                    Wenn Du nun mal, nur zur Probe, ein eigenes Upload-Script erzeugst, indem Du ein Script schreibst, in dem

                    copy altes_uploadscript.php neues_uploadscript.php

                    und dann in deinem Upload-Formular das neue Upload-Script benutzt, dann müsste es funktionieren.
                    Denn nach dem Copy gehört das neue Uplaoadscript nicht m,ehr Dir, sondern dem wwwrun.

                    Alternativ kannst Du das Verzeichnis, in das die Bilder kopiert werden sollen, mittels FTP erzeugen. Dann gehört es Dir. Damit darf das alte Uploadscript, das ebenfalls Dir gehört, in dem Verzeichnis Schreiben.

                    Probier es mal aus und teil uns die Ergebnisse mit.

                    Mehr darüber findest Du unter http://selfhtml.bitworks.de --> wie funktioniert der Safe-Mode

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

                    Tom

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

                    1. Oke, ich habe nun ein Script gemacht das funktioniert, der Hauptfehler lag daran, dass ich im FTP-Programm den Ordner wo die Files raufgeladen werden, in Eigenschaften auf Schreieben setzten musste. Ich habe das Script nun auch mit move_uploaded_file gemacht, Danke für eure Hilfe.

                      Lg Thomas

                2. Hallo Tom,

                  Der Safe-Mode ist eine mMn zum Teil reperaturbedürftige Maßnahme von PHP, durch die versucht werden sollte, dass nur Berechtigte auf bestimmte Dateien zugreifen.

                  Der fliegt zum Glück in PHP 6 raus. Man will sich stattdessen auf open_basedir konzentrieren, was ich für wesentlich sinnvoller halte.

                  Gruß
                  Patrick

                  --
                  "Ein Blitzableiter auf einem Kirchturm ist das denkbar stärkste Misstrauensvotum gegen den lieben Gott." (Karl Kraus)
                  1. Hello,

                    Der Safe-Mode ist eine mMn zum Teil reperaturbedürftige Maßnahme von PHP, durch die versucht werden sollte, dass nur Berechtigte auf bestimmte Dateien zugreifen.

                    Der fliegt zum Glück in PHP 6 raus. Man will sich stattdessen auf open_basedir konzentrieren, was ich für wesentlich sinnvoller halte.

                    Ja, was den Zugriff auf das Dateisystem betrifft, finde ich das auch.
                    Aber was das gemeinsame Ausschalten der anderen kritischen Elemente betrifft, ist er eben doch ganz praktisch.

                    • system
                    • exec
                    • ...
                    • Ändern von Settings

                    Das muss man dann wohl in Zukunft alles einzeln ausschalten?

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

                    Tom

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

              2. echo $begrüßung;

                safe_mode Off On

                Das heißt, global ist der Safe Mode zwar eingeschaltet, aber lokal ausgeschaltet. Wie passt das zusammen? In der php.ini gesetzt oder fest einkompiliert und dann in der http.conf wieder ausgeschaltet? Denn das sind die beiden Orte, an denen die php.ini directive safe_mode berücksichtigt wird.

                Was mich ebenfalls noch am eingeschalteten Safe-Mode zweifeln läst, ist, dass die Fehlermeldung ihn nicht erwähnt hat. Sonst schreibt sie da immer noch ein "SAFE MODE Restriction in effect. The script whose uid is ... is not allowed to access ..."

                Und was mich noch stört, ist das copy() bei hochgeladenen Dateien. Zum Verschieben von hochgeladenen Dateien soll man move_uploaded_file() verwenden.

                echo "$verabschiedung $name";

                1. Hello,

                  local global

                  safe_mode Off   On

                  Du hast Recht. Erst der local, dann der globale Wert...

                  Dann könnte es eigentlich nur noch sein, dass er versucht, die Datei außerhalb seines "Webcontainers" abzulegen. Es ist uns schließlich unterschlagen worden, was Quelle und was Ziel waren...

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

                  Tom

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