mkdir() problem in verbindung mit upload
  • hallo, ich habe, wie der titel schon sagt, ein problem mit der mkdir() funktion von php.

    hier erstmal der Code:

    $docroot = $_SERVER['DOCUMENT_ROOT'];
    $doc_root = "".$docroot."/images/upload/".$id."/";

    $new_dir = mkdir($doc_root, 0777);

    if(isset($_POST["pic1"]) && !empty($_POST["pic1"])) {
    if(@ini_set("upload_max_filesize", "3M")) {
    echo 'ini set exc.';
    }
    else {
    echo 'error -> ini_set';
    }
    if (move_uploaded_file($HTTP_POST_FILES[´pic1´][´1´], $doc_root.$HTTP_POST_FILES[´pic1´][´1´])){
    $pic1 = TRUE;
    }
    else {
    $pic1 = FALSE;
    }
    }


    der soll einfach einen ordner erstellen, welcher eine vorher angegebene ID hat und darein dann eine datei laden.

    nun kommt der fehler:

    Warning: mkdir() [function.mkdir]: Unable to access home/strato/www/fd/www.domain.de/htdocs/images/upload/3/

    wobei 3 die ID ist die angegeben wurde. ich habe der php datei 777 rechte gegeben, daher verstehe ich nicht so richtig wo das problem ist.

    könnte das an Strato liegen, also das das irgendwie auf einem windows server liegt und daher nicht geht? ich stehe auf dem schlauch :(

  • 7 Answers sorted by
  • Soviel ich weiß musst du auch dem Ordner, der über dem neuen liegt die 777-Rechte geben...

    Viele Grüße,
    Chris

  • ich habe jetzt dem ordner images und upload 777 rechte gegeben, aber es geht nicht =/

    kann das an strato liegen? ich habe einfach kA mehr :-(

  • Du mußt das Verzeichnis mit einem / anfangen! Also so:
    /home/strato/www/fd/www.domain.de/htdocs/images/upload/3/
    Dann sollte es hoffentlich gehen.

  • das / am anfang wird durch $docroot gemacht, da so ja der genaue pfad ausgelesen wird per PHP. daher verstehe ich das nicht, habe / davor gemacht und es geht immer noch nicht.

    soll ich die Funktion einfach streichen? es ist nicht lebensnotwendig denke ich das die eingebaut wird, wäre mehr ein nettes feature. kann es ggf. an Strato und dem Server liegen? ist das größte PowerWeb packet, ich habe den server aber nicht bestellt, ist für jmd. anderen

  • Versuche es mal damit:
    $oldumask = umask(0);<br />$new_dir = mkdir($doc_root, 0777);<br />umask($oldumask);<br />
    Ohne unmask wird durch mkdir das Verzeichnis nur auf 0755 gesetzt!
    PHP unmask()

  • leider geht es so auch nicht :( ich denke mal, dass es das beste ist, wenn ich das einfach weglasse, leider

    liegt es ggf daran, dass Strato das blockt?

  • also bei mir gehts bei strato ohne probs mit mkdir.
    hier nen bsp (codeschnipsel aus meinem filemanager)
    wende den filemanager haben willst sags mir (also file upload script mit ordner anlegen grundlagen)

    <br />/* schnipsel */<br /> // aktuellen pfad ermitteln<br /> // dazu dateiname + endung weg -> ergibt aktuellen, absoluten pfad<br /> // dateinname + endung feststellen, idem man letztes vorkommen von "/" gesucht wird<br /> $tmppos = strrpos($_SERVER['ORIG_SCRIPT_FILENAME'], '/');<br /> // pfad ermitteln, indem substring vom start bis zum vorkommen vom letzten "/"<br /> $path = substr($_SERVER['ORIG_SCRIPT_FILENAME'], 0 , $tmppos);<br /><br />/*<br />$destinationpath -> der pfad AB deiner aktuelle position (des scriptes) bis zu dem ordner der angelegt werden soll<br />$destination -> das was noch angelegt werden soll<br />*/<br /><br />/* schnipsel */<br /> // wenn zielordner nicht existiert anlegen<br /> if (!is_dir($path."/".$destinationpath."/".$destination)){<br /> mkdir($path."/".$destinationpath."/".$destination);<br /> }<br />

    läuft zu 300% bei strato mit php5 cfg
    [PHPINFO]

    so viel spaß

Willkommen!

It looks like you're new here. If you want to get involved, click one of these buttons!

Einloggen Registrierung!

Diskussionsteilnehmer

Who's Online (0)