Safe Mode Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Safe Mode Problem

    Hallo,

    sorry, dass ich euch wieder damit nerven muss. Aber leider habe ich ein safe mode problem, bei dem ich nicht weiterkomme.

    Hier die Funktion zum erstellen eines Ordner und das kopieren von Dateien in den neu erstellten Ordner:

    PHP-Code:
    function rec_copy ($from_path$to_path)
                {
                    
    mkdir($to_path0777);
                    
    chmod ($to_path0777);
                    
    $this_path getcwd();
                    if (
    is_dir($from_path))
                    {
                        
    chdir($from_path);
                        
    $handle opendir('.');
                        while ((
    $file readdir($handle)) !== false)
                        {
                            if ((
    $file != ".") && ($file != ".."))
                            {
                                if (
    is_dir($file))
                                {
                                    
    rec_copy ($from_path $file "/"$to_path $file "/");
                                    
    chdir($from_path);
                                }
                                if (
    is_file($file))
                                {
                                    
    #$quelle = $from_path."/".$file;
                                    #$ziel = $to_path."/".$file;
                                    #chmod ($quelle, 0777);
                                    #chmod ($ziel, 0777);
                                    #copy($quelle, $ziel);
                                    
    umask(0);
                                    
    copy($from_path $file$to_path $file);
                                }
                            }
                        }
                        
    closedir($handle);
                    }
                }

                
    rec_copy(dirname(__FILE__).'/shopvorlage/',dirname(__FILE__).'/'.$shopname.'/'); 
    Der Ordner wird mit den Rechten 777 angelegt, aber dennoch erhalte ich die Meldung:

    Warning: copy(): SAFE MODE Restriction in effect. The script whose uid is 20076 is not allowed to access /srv/www/...


    Wie kann ich diesen Fehler beheben, ohne Änderungen bei SafeMode vorzunehmen?


    MFG
    Benji

  • #2
    Die Rechte hast du kontrolliert?
    Warum wendest du umask erstbei den Dateien an und nicht schon beim Ordner?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Hallo,

      wie gesagt, der neu erstellte Ordner hat die Rechte 777. umask() habe ich nun auch bei den Ordner verwendet. Das Problem ist immer noch das gleiche.


      MFG
      Benji

      Kommentar


      • #4
        Original geschrieben von Benji
        Hallo,

        wie gesagt, der neu erstellte Ordner hat die Rechte 777. umask() habe ich nun auch bei den Ordner verwendet. Das Problem ist immer noch das gleiche.


        MFG
        Benji
        Da wirst du - ohne die Hilfe deines Providers - nichts machen können.

        Zitat von bertrand
        Beware that when in safe mode, mkdir creates folders with apache's UID, though the files you create in them are of your script's UID (usually the same as your FTP uid).

        What this means is that if you create a folder, you won't be able to remove it, nor to remove any of the files you've created in it (because those operations require the UID to be the same).

        Ideally mkdir should create the folder with the script's UID, but this has already been discussed and will not be fixed in the near future.

        In the meantime, I would advice NOT to user mkdir in safe mode, as you may end up with folders you can't remove/use.

        Kommentar


        • #5
          Kann man denn die Kopierfunktion bei SafeMode = On garnicht verwenden?


          MFG
          Benji

          Kommentar


          • #6
            normalerweise bedeutet safe_mode = on, dass der Provider dir nicht erlaubt, per Script Upload durchzuführen.

            Kommentar


            • #7
              Original geschrieben von asp2php
              normalerweise bedeutet safe_mode = on, dass der Provider dir nicht erlaubt, per Script Upload durchzuführen.
              Nicht nur. Mit eingeschaltetem safe_mode werden auch bestimmte Funktionen eingeschränkt, sodass beim Zugriff auf Dateien/Verzeichnisse überprüft wird, ob es sich dabei um die gleiche uid (userid) handelt um zu verhindern, dass jemand anders als der Besitzer der Dateien dieselbigen bearbeitet/einsieht.

              Aber das beste wäre, wenn du dich per Mail an deinen Provider wenden würdest, dieser sollte dir in diesem Falle wohl die beste Auskunft geben können.

              Kommentar


              • #8
                Ich möchte aber, dass aus Sicherheitsgründen SafeMode aktiviert bleibt. Was mache ich nun?

                Es muss doch eine Möglichkeit geben, im aktivierten SafeMode Ordner zu kopieren. Oder geht das nur wenn SafeMode deaktiviert ist?


                MFG
                Benji

                Kommentar


                • #9
                  Original geschrieben von Benji
                  Ich möchte aber, dass aus Sicherheitsgründen SafeMode aktiviert bleibt.
                  Und was für "Sicherheitsgründe" sollen das sein? Ich hatte bis jetzt noch keine Probleme damit, außer dein Code hat Lücken, dann würde auch ich ihn anlassen

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Ok verstehe. Gibt es nun eine Möglichkeit oder nicht?


                    MFG
                    Benji

                    Kommentar


                    • #11
                      ja, siehe dir die FTP-funktionen an. ->ftp_mkdir
                      http://ch2.php.net/manual/en/function.ftp-mkdir.php

                      Kommentar


                      • #12
                        Guten Abend,

                        ich wollte einen Ordner wie folgt auf dem FTP Server anlegen:

                        PHP-Code:
                        $conn_id ftp_connect("server");
                        $login_result ftp_login($conn_id"user""passwort");
                        if ((!
                        $conn_id) || (!$login_result)) {
                           print(
                        "Sorry, service is down, please try again later");
                           die;
                        }
                        else {
                           
                        $clan strtolower($clan);
                           
                        $dirname "VERZEICHNIS";
                           
                        ftp_mkdir ($conn_id,$dirname);
                           
                        $chmod_cmd="CHMOD 0777 ".$dirname;
                           
                        $chmod=ftp_site($conn_id$chmod_cmd);
                           
                        ftp_quit($conn_id);

                        Aber leider erhalte ich die Meldung:
                        Warning: ftp_mkdir(): Create directory operation failed. in /srv/www/htdocs/web1235/html/bla/ftp_server_verbinden.php on line 21

                        Warning: ftp_site(): SITE CHMOD command failed. in /srv/www/htdocs/web1235/html/bla/ftp_server_verbinden.php on line 23


                        MFG
                        Benji

                        Kommentar


                        • #13
                          versuchs mal so:
                          PHP-Code:
                          ftp_site($conn_id'CHMOD 0777 '.$dir); 
                          bei mir funzt das.

                          Kommentar


                          • #14
                            Hallo,

                            vielen Dank für deine Hilfe. Ich habe es nun wie folgt:

                            $conn_id = ftp_connect("server");
                            $login_result = ftp_login($conn_id, "user", "passwort");
                            if ((!$conn_id) || (!$login_result)) {
                            print("Sorry, service is down, please try again later");
                            die;
                            }
                            else
                            {
                            $dir = "VERZEICHNIS";
                            ftp_mkdir ($conn_id,$dir);
                            ftp_site($conn_id, 'CHMOD 0777 '.$dir);
                            ftp_quit($conn_id);
                            }


                            Den Fehler erhalte ich aber immer noch.


                            MFG
                            Benji

                            Kommentar


                            • #15
                              achso jetzt fällts mir auf, es wurde noch gar kei ordner angelegt.
                              nach ftp_login() musst wahrscheinlich noch ordner wechseln. wenn du dich einlogst landet du erstmals zuoberst in deiner ftp ordner struktur.

                              also musst noch vielleicht das hier benutzen:

                              ftp_chdir($conn_id, $path)

                              Kommentar

                              Lädt...
                              X