PHP Ordnererstellung funktioniert nicht

Casuality

New member
5 Mai 2015
1
0
Hallo Leute,
ich bin gerade leicht verzweifelt. bin seit mehreren Wochen am Programmieren einer Website zum Dateiupload. Die ist sehr einfach gehalten, bis auf den Dateiupload funktioniert auch alles ganz gut.

Es gibt keine Fehler aus. muss ich vllt in Linux noch etwas einstellen was ich nicht bedacht habe?
Hier der Code
PHP:
ebeneA_select=$_POST["EbeneA"];
    $ebeneB_select=$_POST["EbeneB"];
    $ebeneC_select=$_POST["EbeneC"];
    $ebeneA_input=replace(utf8_encode(mysqli_escape_string($verbindung, $_POST["ebeneA_input"])));
    $ebeneB_input=replace(utf8_encode(mysqli_escape_string($verbindung, $_POST["ebeneB_input"])));
    $ebeneC_input=replace(utf8_encode(mysqli_escape_string($verbindung, $_POST["ebeneC_input"])));
    $keywords = utf8_encode(mysqli_escape_string($verbindung, $_POST["keyword"]));
    $beschreibung = utf8_encode(mysqli_escape_string($verbindung, $_POST["beschreibung"]));
    $prio=$priority;  // für spätere Prioeinstellungen
    $ansprechpartner_ID= mysqli_escape_string($verbindung, $_POST["ansprechpartner"]); // ID
    $projekt_ID = mysqli_escape_string($verbindung, $_POST["projekt"]); // besteht aus "ID

// wörter in ein Array bringen
// und sonderzeichen ersetzten
    $woerter=explode(" ",$keywords);
    $anzahl=count($woerter);
    for($i=0;$i<$anz;$i++){
        $woerter[$i]=replacer($woerter[$i]);
    }
// Festlegung der Ordnernamen
    $ebeneA=ebenenAusgabe($ebeneA_select,$ebeneA_input);
    $ebeneB=ebenenAusgabe($ebeneB_select,$ebeneB_input);
    $ebeneC=ebenenAusgabe($ebeneC_select, $ebeneC_input);

// Ordnerstruktur überprüfen und erzeugen
    $currentPath= addDirectory($path);
    $currentPath= addDirectory($currentPath .$ebeneA ."/");
    $currentPath= addDirectory($currentPath .$ebeneB ."/");
    $currentPath= addDirectory($currentPath .$ebeneB ."/");

// datei in Ordner ablegen
    $filesize=(($_FILES["datei"]["size"])/1000);
    $filename=$_FILES["datei"]["name"];
    move_uploaded_file($_FILES["datei"]["temp_name"], $currentPath . $filename);

// keywords einfügen und deren IDS beschaffen
    $idKeywordArray=keywordInserter($keywords,$anzahl,$verbindung);

// Datei einfügen und Datei ID bekommen
    $dateiID=mysqlDataIntegration($verbindung,$currentPath,$ebeneA,$ebeneB,$ebeneC,$beschreibung,$prio,$ansprechpartner_ID,$projekt_ID,$filename);

// Keywords mit datei verknüpfen
    key_datIntegration($idKeywordArray,$dateiID,$verbindung)


Hier nochdie einzelnen Funktionen
PHP:
function key_datIntegration($idkeywordArray,$dateiID,$verbindung){
    for($i=0;$i < count($idkeywordArray);$i++){
        $sql="
              INSERT INTO key_dat (
              DATEI_ID_FK,
              Keyword_ID_FK
            )(
              '".$dateiID."',
              '".$idkeywordArray[$i]."'
            )
        ";
        mysqli_query($verbindung,$sql);
    }
}

function mysqlDataIntegration($verbindung,$currentPath,$ebeneA,$ebeneB,$ebeneC,$beschreibung,$prio,$ansprechpartner_ID,$projekt_ID,$dateiname){
    $sql="
        INSERT INTO datei (
          Dateipfad,
          EbeneA,
          EbeneB,
          EbeneC,
          Uploader_ID_FK,
          Priority,
          Dateiname, ";
          if($beschreibung != ""){
              $sql.="beschreibung, ";
          }
    $sql.="
          Anspr_ID_FK,
          Projekt_ID_FK
        )(
          '".$currentPath."',
          '".$ebeneA."',
          '".$ebeneB."',
          '".$ebeneC."',
          '".$_SESSION['ID']."',
          '".$prio."', ";
  if($beschreibung != ""){
      $sql.=" '".$beschreibung."' ";
  }
    $sql.="
          '".$ansprechpartner_ID."',
          '".$projekt_ID."',
          '".$dateiname."'
        )
    " ;
  mysqli_query($verbindung,$sql);  // eintragung

  $sql="SELECT MAX(DATEI_ID) FROM datei"; // die gerade iengtragene Datei sit die letzte, daher aufruuf mit max um an die ID zu kommen
  $res=mysqli_query($verbindung,$sql);
  $row=mysqli_fetch_assoc($res);
  return $row['DATEI_ID'];
}

function addDirectory($currentPath){
    if(!directoryExits($currentPath)){
        mkdir($currentPath,0777);
    }
    return $currentPath;
}

function directoryExits($currentPath){
    return is_dir($currentPath);
}

function ebenenAusgabe($ebene,$inputField)
{
    if ($ebene != "new") {
        $ebenen=explode("_",$ebene);
        $anz=count($ebenen);
         switch($anz){
             case '1':
                 return $ebenen[0];
                 break;
             case '2':
                 return $ebenen[1];
                 break;
             case '3':
                 return $ebenen[2];
                 break;
         }
    } else {
        return $inputField;
    }
}



function keywordInserter($keywords,$anzahl,$verbindung){
   $keywordIdents="";
    for($i=0;$i<$anzahl;$i++){
        $sql="INSERT INTO Keywords (keyword)('".$keywords[$i]."')";
        mysqli_query($verbindung,$sql);
        $sql="SELECT Keyword_ID FROM keywords WHERE keyword = '". $keywords[$i]."'";
        $res=mysqli_query($verbindung,$sql);
        $row=mysqli_fetch_assoc($res);
        $kewordidents[$i]=$row['Keyword_ID'];
    }
    return $keywordIdents;
}

function replace($string){

    $stringArray = explode(" ", $string);
    $size = count($stringArray);
    if($size>0) {
        $komplettesWort="";
        for($i=0;$i<$size;$i++){
            $komplettesWort .= replacer($stringArray[$i]);
        }


    }
    return $komplettesWort;
    // Fehler ausgabe
}
function replacer($string) {
            $ersetzen = array(  'ä' => 'ae', 'Ä' => 'Ae',
                'ö' => 'oe', 'Ö' => 'Oe',
                'ü' => 'ue', 'Ü' => 'Ue',
                'ß' => 'ss', ' ' => '', '´' => '', '`' => '',
                '*' => '', '+' => '', '\'' => '', '#' => '',
                ',', ';' => '', '.' => '', ':' => '', '-' => '',
                '_' => '', '@' => '');
            return ucfirst(strtolower(strtr($string, $ersetzen)));

    #$eingegebenerString = array("ä", "ö", "ü", "Ä", "Ö", "Ü", "ß", ".", ":", ",", ";", " ", "_");
    #$ersetzenderString = array("ae", "oe", "ue", "Ae", "Oe", "Ue", "ss", "", "", "", "", "", "");
    #$string = str_replace($eingegebenerString, $ersetzenderString, $string);


Ich danke euch schon mal für die Hilfe
 
Grundsätzlich wird der PHP Code unter dem Benutzer des Webservers ausgeführt. Hat dieser in die Berechtigung im Zielverzeichnis Order anzulegen? (Schreib-/Lese-Berechtigung)

PS: In welchem Verzeichnis soll addDirectory() denn $currentPath anlegen.
und warum extra directoryExits() wenn es is_dir() genauso tut?
 
Zuletzt bearbeitet:
Welche der knapp 200 Zeilen funktioniert nun nicht?
 
Die Fehlerbeschreibung ist nicht wirklich hilfreich… "Ich habe einen Dateiupload programmiert, bei dem alles funktioniert… nur der Dateiupload nicht" 8O
 
"move_uploaded_file" gibt sehr wohl eine sehr detaillierte Fehlermeldung aus, selbst bei Erfolgreichen Upload lassen sich alle Infos ausgeben.