Daniel: copy() geht nicht

Hi,
ich bekomme folgende fehlermeldung:

Warning: copy(/tmp/php2UshXV): failed to open stream: Permission denied in <mein php script> on line 61

woran liegt das? darf ich auf den erstellten ordner tmp nicht zugreifen?
sollte ich lieber move_uploaded_file() benutzen? Wie muss ich die
rechte einstellen? wie kann ich diese ändern? läuft lokal auf nem Linux
-> Apache.

MfG

  1. Hi Daniel,

    Warning: copy(/tmp/php2UshXV): failed to open stream: Permission denied in <mein php script> on line 61

    woran liegt das? darf ich auf den erstellten ordner tmp nicht zugreifen?

    Du willst eine Datei von /tmp/php2UshXV kopieren - wohin? In dem Ordner, wo es es hin kopieren willst, hat dein PHP Script keine Schreibrechte.

    sollte ich lieber move_uploaded_file() benutzen?

    Abgesehen davon, dass du durch das verwenden einern anderen Funktion nicht mehr Rechte bekommst ;-) solltest du diese Funktion auf jeden Fall verwenden, da hier gleich noch geprüft wird, ob die Datei eine upgeloadete Datei ist und du somit Attacken noch etwas vorbeugen kannst.

    Wie muss ich die rechte einstellen? wie kann ich diese ändern? läuft lokal auf nem Linux

    Die Rechte musst du so einstellen, dass der Benutzer unter dem dein Script ausgeführt wird (kann apache, wwwrun oder wenn der Server richtig[tm] aufgesetzt ist ein eigener Benutzername von dir sein) Schreibrechte auf das Verzeichnis hat.

    Du kannst die Rechte z.B. mit deinem FTP Programm setzen. I.d.R. gibts da sowas wie Rechtsklicke -> Eigenschaften / Chmod.

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Auf viele Fragen weiß auch Wikipedia eine Antwort.
    1. Hi,

      Du kannst die Rechte z.B. mit deinem FTP Programm setzen. I.d.R. gibts da sowas wie Rechtsklicke -> Eigenschaften / Chmod.

      ich habs über Dateisystem so probiert, ging nicht. vermutlich da ich es von meinem rechner aus probiert habe. hab den ordner jetzt neu angelegt mit dem code:

        
      umask(000);  
      mkdir("tmp", 0777);  
      
      

      jetzt gehts.

      MfG

      1. Hi!

        Du kannst die Rechte z.B. mit deinem FTP Programm setzen. I.d.R. gibts da sowas wie Rechtsklicke -> Eigenschaften / Chmod.

        ich habs über Dateisystem so probiert, ging nicht. vermutlich da ich es von meinem rechner aus probiert habe. hab den ordner jetzt neu angelegt mit dem code:

        umask(000);
        mkdir("tmp", 0777);

          
        Handelt es sich hierbei um das /tmp im Root-Verzeichnis oder um ein gleichnamiges Verzeichnis in deinem DOCUMENT\_ROOT? Für /tmp \_muss\_ nämlich auch noch das Sticky-Bit (rwxrwxrwxt) gesetzt sein, um damit sicherzustellen, dass wirklich \_nur\_ der Besitzer der Datei diese auch löschen kann und nicht irgendwer anders. Aber wie es scheint, ist es sowieso ein Verzeichnis im DOCUMENT\_ROOT, da man /tmp nicht einfach so löschen und neuanlegen kann...  
          
        Darüber hinaus solltest du sowas mit chmod 777 \_immer\_ vermeiden und versuchen, die Rechte so restriktiv wie möglich zu setzen.  
          
        Grüße,  
        Fabian St.  
        
        -- 
        Selfcode: [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:( ss:) de:> js:| ch:? mo:) zu:)](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%28+ss%3A%29+de%3A%3E+js%3A%7C+ch%3A%3F+mo%3A%29+zu%3A%29)
        
        1. Hi,

          Darüber hinaus solltest du sowas mit chmod 777 _immer_ vermeiden und versuchen, die Rechte so restriktiv wie möglich zu setzen.

          chmod ist ja für dateien und nicht für ordner. Soeben wurde der Ordner
          wieder auf schreibgeschütz gelegt? liegt das an den Confix vom Apache?
          was muss ich da ändern?

          MfG

          1. Hi!

            chmod ist ja für dateien und nicht für ordner. Soeben wurde der Ordner
            wieder auf schreibgeschütz gelegt? liegt das an den Confix vom Apache?
            was muss ich da ändern?

            Nein, chmod hat natürlich auch Auswirkungen auf die Order und die sich daran befinden Dateien, wenn der Parameter -R übergeben wird. -R steht dabei für «rekursiv» und bedeutet eben, dass die übergebenen Rechte auch für die sich darin befinden Dateien und Unterordner gelten sollen.
            Am besten liest du mal die Manpage zu chmod.

            Bzgl. des eventuellen Problems mit Confixx kann ich dir leider nichts sagen, weil ich aus eben diesen Gründen auf solche Tools verzichte. Lerne, alles auf der Kommandozeile zu erledigen und du wirst auch schneller vorankommen.

            Grüße,
            Fabian St.

            1. Hi,

              Lerne, alles auf der Kommandozeile zu erledigen und du wirst auch schneller vorankommen.

              Kommandozeile???

              Wie gesagt, der server steht quasi nebenmir, es wäre daher kein alzu
              großes ding an dem was umzustellen, außerdem hab ich von meinem rechner
              aus jegliche zugriffsrechte.

              MfG

          2. Moin,

            liegt das an den Confix vom Apache?

            Meinst Du Confixx oder die Apache-Config-Files?

            Wenn dort Confixx läuft, gute Nacht. Denn bei diesem Mistteil werden regelmäßig Cronjobs gefahren die alles wieder so herstellen wie Confixx das haben will. Desweiteren sind die Config-Files für den Apchen so sehr aufgeteilt, daß man lange suchen muß um die rictige Stelle zu finden.

            SteBu

    2. Hello,

      Du willst eine Datei von /tmp/php2UshXV kopieren - wohin? In dem Ordner, wo es es hin kopieren willst, hat dein PHP Script keine Schreibrechte.

      Oder aber auf tmp/php2UshXV/ keine Leserechte, was mir anhand der Fehlermeldung wahrscheinlicher erscheint. Es wird nämlich die Quelle benannt und nicht das Ziel...

      Könnte an der Einstellung von openbasedir liegen. Da wurde ggf. das tmp-Verzeichnis des Users vergessen und dann wahrscheinlich auch das Session-Verzeichnis

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

      Tom

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

        Könnte an der Einstellung von openbasedir liegen. Da wurde ggf. das tmp-Verzeichnis des Users vergessen und dann wahrscheinlich auch das Session-Verzeichnis

        gut möglich denn:

        PHP Credits
        Configuration
        PHP Core

        ---------------------------------------------
        |  Directive   | Local Value | Master Value |
        ---------------------------------------------
        | open_basedir |  no value   |   no value   |
        ---------------------------------------------
        |upload_tmp_dir|  no value   |   no value   |
        ---------------------------------------------

        ^
        | das gibt mir phpinfo()

        wie und wo stell ich das um? und auf was stell ich das?

        hab vollen zugriff auf das dateisystem aufm server.

        MfG

        1. Hello,

          Könnte an der Einstellung von openbasedir liegen. Da wurde ggf. das tmp-Verzeichnis des Users vergessen und dann wahrscheinlich auch das Session-Verzeichnis

          gut möglich denn:

          PHP Credits
          Configuration
          PHP Core


          |  Directive   | Local Value | Master Value |

          | open_basedir |  no value   |   no value   |

          |upload_tmp_dir|  no value   |   no value   |

          ^
          | das gibt mir phpinfo()

          Um welches OS handelt es sich beim Server? Hattest Du das schon gesagt?
          Mir dünkt nämlich, wenn es Windows wäre, dass das tmp-Dir dann 'temp' in der ini heißen müsste bzw eben ein tmp auf dem Server angelegt werden müsste.

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

          Tom

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

            Um welches OS handelt es sich beim Server? Hattest Du das schon gesagt?

            Ja hab ich schon, auf meinem WinXP der Server hat Linux. vorausgesetzt OS = BS <= BetriebsSystem

            Mir dünkt nämlich, wenn es Windows wäre, dass das tmp-Dir dann 'temp' in der ini heißen müsste bzw eben ein tmp auf dem Server angelegt werden müsste.

            mir düngt irgndwer oder irgendetwas, z.B. ich hat das unabsichtlich
            umgestellt da es ja mal funktioniert hat, bis ich das bereits erwähnte
            umask(777) machte. seitdem geht es nurnoch ab und an mal. könnte aber
            auch sein das jmd am server anderweitig rumgespielt hat.

            MfG

  2. Hi,
    ich habe extreme probleme mit meinem Apache, der läuft auf Linux, der
    ändert ständig die rechte, bzw. ich mach nen ordner mit vollzugriff und
    irgendwann ist er schreibgeschützt. woran liegt das?

    Liegt das an der Apache Configuration?
    an der PHP Configuration?
    am linux server? evt. verseucht(Wurm, Virus)?
    am copy() befehl? nähmlich sobald ich eine datei in den ordner kopiere wird dieser schreibgeschützt.
    wie kann ich die rechte auf einen ordner im PHP skript änder? chmod() ist ja nur für dateien.

    Ich werd bei dem ganzen hin und her noch verrückt. Ich glaube bald der Server hat ein Eigenleben.

    Kann ich wenn es an einer der conifgs liegt das von meinem rechner aus
    ändern oder muss man das am Server machen?

    und alles fing mit einem umask(777) an. falls das hilfreich sein könnte.

    MfG

    1. Hi!

      Zuerst einmal: Was hat dein Problem mit einer «Datenbank» zu tun, wie es der Themenbereich vermuten lässt? Darüber hinaus solltest du einen Link zu deinem alten Thread setzen, da dieses Problem wohl unmittelbar damit zusammenhängen scheint.

      ich habe extreme probleme mit meinem Apache, der läuft auf Linux, der
      ändert ständig die rechte, bzw. ich mach nen ordner mit vollzugriff und
      irgendwann ist er schreibgeschützt. woran liegt das?

      Definiere bitte erst einmal den Begriff «schreibtgeschützt», d.h. wie schauen die Rechte für Besitzer, Gruppe, Welt aus? Darüber hinaus ändert der Apache mit Sicherheit nicht deine Dateirechte.

      Liegt das an der Apache Configuration?
      an der PHP Configuration?
      am linux server? evt. verseucht(Wurm, Virus)?
      am copy() befehl? nähmlich sobald ich eine datei in den ordner kopiere wird dieser schreibgeschützt.
      wie kann ich die rechte auf einen ordner im PHP skript änder? chmod() ist ja nur für dateien.

      Nein, alle diese Punkte können ausgeschlossen werden, sofern du nicht mit PHP und chmod(), umask() irgendwelche Basteleien anstellst. Wie ich dir bereits in deinem alten Thread gesagt habe, solltest du die Datei-Rechte nicht mit PHP setzen, sondern in der Shell.
      Darüber hinaus ist die Aussage «chmod betrifft nur Dateien» falsch, siehe auch hier https://forum.selfhtml.org/?t=110608&m=694209

      Ich werd bei dem ganzen hin und her noch verrückt. Ich glaube bald der Server hat ein Eigenleben.

      Nein, mit Sicherheit nicht. Der macht nur das, was man von ihm will.

      Kann ich wenn es an einer der conifgs liegt das von meinem rechner aus
      ändern oder muss man das am Server machen?
      und alles fing mit einem umask(777) an. falls das hilfreich sein könnte.

      Da sieht man einmal mehr, welche Probleme es nach sich ziehen kann, wenn man mit Sachen herumspielt, von denen man keine Ahnung hat!
      Um eine Lösung für dein Problem zu finden, solltest du uns folgende Informationen zukommen lassen:

      • Beschreibe noch einmal ganz genau, was dein Problem ist und wie es sich
          äußert
      • Welche Rechte hat der Ordner, in dem du eine Datei kopieren willst.
          --> ls -al /path/to/folder in der Konsole
      • Läuft PHP als Apache-Modul oder CGI-Variante
      • Unter welcher Kennung läuft der Apache
          --> Direktiven User und Group in der httpd.conf
          --> oder auch Ausgabe von ps aux | egrep 'apache|httpd'
      • Deaktiviere mal Confixx (eventuelle CronJobs ?, etc.) oder besser: Schmeiß es ganz von der Platte!

      Grüße,
      Fabian St.

      1. Hi,

        Definiere bitte erst einmal den Begriff «schreibtgeschützt», d.h. wie schauen die Rechte für Besitzer, Gruppe, Welt aus? Darüber hinaus ändert der Apache mit Sicherheit nicht deine Dateirechte.

        wenn ich auf den ordner, rechtsklick, eigenschaften mache, von meinem PC aus (WinXP) dann ist der hacken bei schreibgeschütz drin, mach ich den raus und klick auf übernehmen ist er trotzdem wieder drin.

        Nein, alle diese Punkte können ausgeschlossen werden, sofern du nicht mit PHP und chmod(), umask() irgendwelche Basteleien anstellst. Wie ich dir bereits in deinem alten Thread gesagt habe, solltest du die Datei-Rechte nicht mit PHP setzen, sondern in der Shell.

        Shell? ich hab das aber einmal mit umask() gemacht und seitdem hab ich das problem.

        Nein, mit Sicherheit nicht. Der macht nur das, was man von ihm will.

        und wie soll ich im sagen das ich nicht will das er das macht was er macht?

        Da sieht man einmal mehr, welche Probleme es nach sich ziehen kann, wenn man mit Sachen herumspielt, von denen man keine Ahnung hat!

        Ja ich weis, steinigt mich, wenn ihr mich überleben läßt tu ichs auch nie wieder.

        Um eine Lösung für dein Problem zu finden, solltest du uns folgende Informationen zukommen lassen:

        • Beschreibe noch einmal ganz genau, was dein Problem ist und wie es sich  äußert

        ich erstelle einen ordner auf dem linux server unter htdocs/seite/ mit namen tmp. ich kopiere eine datei da rein. und da kommt schon der fehler:

        Warning: move_uploaded_file(/tmp/phpieSDaz): failed to open stream: Permission denied in <meinscript> on line 60

        /tmp/phpieSDaz = $_FILES['datei']['tmp_name'];

        Warning: move_uploaded_file(): Unable to move '/tmp/phpieSDaz' to './tmp/quicknavigation.jpg' in <meinscript> on line 60

        './tmp/quicknavigation.jpg' = "./tmp/".$_FILES['neue_datei']['name'];

        kann es sein das die einstellung für den temporär ordner nicht mehr
        stimmen? oder da irgendein teil nichtmehr übergeben wird? es hat
        nähmlich funktioniert.

        • Welche Rechte hat der Ordner, in dem du eine Datei kopieren willst.

        ansich voll!
        wenn ich ihn mit mkdir("tmp", 0777) erstelle hat er bis zum ersten
        upload dies auch, sobald die erste datei reinkopiert wurde ists weg.

        Wenn ich ihn über meinen PC erstelle (WinXP) bekommt er das attribut
        schreibgeschützt und ich bekomme das nicht weg :(

        --> ls -al /path/to/folder in der Konsole

        welche konsole?

        • Läuft PHP als Apache-Modul oder CGI-Variante

        wie bekomm ich das heraus?

        • Unter welcher Kennung läuft der Apache

        --> Direktiven User und Group in der httpd.conf

        User/Group  wwwrun(30)/8

        • Deaktiviere mal Confixx (eventuelle CronJobs ?, etc.) oder besser: Schmeiß es ganz von der Platte!

        wie mach ich das?

        MfG

        1. Hi!

          wenn ich auf den ordner, rechtsklick, eigenschaften mache, von meinem PC aus (WinXP) dann ist der hacken bei schreibgeschütz drin, mach ich den raus und klick auf übernehmen ist er trotzdem wieder drin.

          Windows? Ich dachte, es geht um Linux... Bei welchen gibts denn jetzt Probleme? Ohne diese Informationen brauchen wir gar nicht weitermachen.

          Grüße,
          Fabian St.

          1. Hi,

            Windows? Ich dachte, es geht um Linux

            Mein PC = WinXP
            Server = Linux

            MfG

            1. Hi!

              Mein PC = WinXP
              Server = Linux

              Und wo gibt es Probleme? Lass dir doch bitte nicht alles aus der Nase ziehen!

              Grüße,
              Fabian St.

              1. Hi,

                Und wo gibt es Probleme? Lass dir doch bitte nicht alles aus der Nase ziehen!

                na beim copieren der abgeloudeten Datei in den unterordner

                htdocs/meineseite/tmp/

                wobei es gradeben wieder funktioniert hat ohne das ich irgendetwas
                gemacht habe. außer die ordner neu angelegt.

                Und niemand war am Server und ich hab außer die ordner neu erstellt nix gemach. schwer verwirrend!

                MfG

                1. Hi!

                  Und wo gibt es Probleme? Lass dir doch bitte nicht alles aus der Nase ziehen!

                  na beim copieren der abgeloudeten Datei in den unterordner

                  htdocs/meineseite/tmp/

                  wobei es gradeben wieder funktioniert hat ohne das ich irgendetwas
                  gemacht habe. außer die ordner neu angelegt.

                  Und niemand war am Server und ich hab außer die ordner neu erstellt nix gemach. schwer verwirrend!

                  Hier noch einmal ganz genau und ausführlich: Unter welchen __OS__ Windows/Linux (--> Distribution?) taucht das von dir geschilderte Problem auf?

                  Grüße,
                  Fabian St.

                  1. Hi,

                    Hier noch einmal ganz genau und ausführlich: Unter welchen __OS__ Windows/Linux (--> Distribution?) taucht das von dir geschilderte Problem auf?

                    mein rechner = Win
                    mein server = Linux

                    auf dem server läuft ein Apache und PHP

                    ruf ich das script auf (von meinem rechenr) klappts manchmal, manchmal klappts nicht.

                    MfG

                    1. Hallo!

                      mein rechner = Win
                      mein server = Linux

                      auf dem server läuft ein Apache und PHP

                      ruf ich das script auf (von meinem rechenr) klappts manchmal, manchmal klappts nicht.

                      Hast Du denn mal probiert zu verstehen was da nicht funktioniert, anstatt einfach nur irgendwas auszuprobieren bis es evtl. klappt?

                      Hast Du Dir die Links die ich Dir in Deinem vorherigen Thread zum Thema gepostet habe inzwischen mal angesehen/gelesen?

                      Hast Du das Berechtigungskonzept von Linux verstanden?
                      Hast Du verstanden wozu umask gut ist?
                      Kannst Du auf der Kommandozeile arbeiten?

                      Dann solltest Du das Problem auch lösen können. Deine Problembeschreibungen sind aber leider etwas dürftig. Trotz Nachfragen wissen wir bis jetzt noch nicht viel mehr als am Anfang (Apache+Linux).

                      Interessant wäre z.B. auch welche Distribution und Version Du verwendest, wie genau Du Zugriff auf das "komplette Dateisystem des Servers" hast (per ftp-client? per windows-explorer Netzwerkumgebung? per Weboberfläche?). Nutzt Du PHP als Server-Modul oder per CGI-Schnittstelle? Wie sehen überhaupt die problematischen Scripte aus? Wie sehen die Dateirechte in den betroffenen Verzeichnissen aus (ggfs. vorher/nachher)?

                      Mal ein paar Anmerkungen:

                      • umask() verändert _keine_ Datei-/Verzeichnisrechte
                      • chmod() funktioniert auch mit Verzeichnissen
                      • wird PHP als Servermodul benutzt, wird die umask zurückgespeichert wenn die jeweilige Anfrage beendet ist

                      Du hast geschrieben, dass Du der einzige Administrator bist. Wenn Du allerdings nicht ordentlich auf der Kommandozeile arbeiten kannst, ein bisschen Ahnung von Linux und den benötigten Programmen/Tools hast, solltest Du evtl. nicht direkt ins kalte Wasser springen, sondern erstmal eine Distribution wie Suse lokal auf einem PC installieren, mit grafischer Oberfläche, Bildschirm, Tastatur... und Dich erstmal in die Materie einarbeiten. Wenn Du einen Linux-Server von einem anderen Rechner aus verwalten willst, geht das nicht mit Confixx und FTP. FTP oder auch Samba sind zwar nett wenn Du Dateien übertragen willst und Confixx mag Dir bei der Verwaltung von Webhosting-Kunden helfen (mir nicht...), aber das hat wenig bis gar nichts mit Server-Administration zu tun. Am einfachsten funktioniert das remote per SSH (Kommandozeile also). Und solange Du das nicht wirklich beherrschst, musst Du auf eine graphische Oberfläche (z.B. KDE) ausweichen, und lokal direkt am Linux-Rechner arbeiten - wie das jeder Linux-Administrator irgendwann mal gemacht hat.

                      Ich rate Dir mal folgendes zu lesen: http://www.rootforum.de/forum/viewtopic.php?t=5248

                      Grüße
                      Andreas

                      --
                      SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
        2. Hallo!

          • Deaktiviere mal Confixx (eventuelle CronJobs ?, etc.) oder besser: Schmeiß es ganz von der Platte!

          wie mach ich das?

          Wie kommt das denn dahin? Kein normaler Mensch installiert sich Confixx auf einem Rechner neben dem Schreibtisch.

          Hast Du eine grafische Oberfläche, bzw. hast Du einen Bildschirm und Tastatur an den "Linux-Server" angeschlossen?

          Wer hat denn Linux auf dem Rechner installiert, und wie?

          Grüße
          Andreas

          --
          SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
  3. Hallo Daniel, bitte schreib mir ein kurzes E-Mail an wannibo@sms.at Danke Geri