Probleme bei der Verzeichniserstellung mit mkdir

key cee

Grünschnabel
Hallo,
Benutzer sollen Bilder hochladen können, bis jetzt hat das auch geklappt,
aber da nicht jeder User den gleichen Ordner haben soll, möchte ich mir das Verzeichnis (bzw. den Ordnernamen) aus der Datenbank holen.
Wenn es noch nicht besteht soll es mit mkdir() erstell werden, aber es kommt immer wieder die Fehlermeldung:
Warning: mkdir(fileadmin/Anzeigen/Werkstoffe/test) [function.mkdir]: No such file or directory in /html/fileadmin/php_dateien/profil_aendern.php on line 67

Ich habe versucht einige der Lösungen hier im Forum auszuprobieren, bis jetzt aber ohne jeden Erfolg.:(

Vielleicht sieht jemand, wo mein Denkfehler liegt::rolleyes:
PHP:
...
$zahl = $_POST['zahl'];
...
// DATENBANKKONTAKT
$host = "...";     //Host der Datenbank
$user = "...";          // Benutzername
$password = "...";  //Passwort
$datenbank = "...";       //Datenbankname
$kontakt = mysql_connect($host, $user, $password);  // Connect zur DB
mysql_select_db($datenbank);             // Auswaehlen der DB


// SQL - Abfrage für Verzeichnisüberprüfung
$result = mysql_query("SELECT TABELLE1.*, TABELLE2.* FROM TABELLE1, TABELLE2
WHERE TABELLE1.WERT1='$zahl'
AND HER_TABELLE1.WERT1=TABELLE2.WERT2");
  while($row = mysql_fetch_array($result)) {
   // Anzahl der Felder ermitteln
  $j = mysql_num_fields($result);
  for($i=0;$i<$j;$i++) {
    // Name des aktuellen Feldes ermitteln
    $k = mysql_field_name($result,$i);
    // Dem Feldnamen einen Wert zuweisen
    $$k = $row[$k];
    }// for ENDE
}// while ENDE

// Verzeichnisüberprüfen ggf. anlegen
$VERZEICHNIS = "../fileadmin/Anzeigen/$WERT3/$WERT4";
echo $VERZEICHNIS;

if (!file_exists($VERZEICHNIS) || !is_dir($VERZEICHNIS)) {
  mkdir($VERZEICHNIS);
  echo "<br>Ordner wird angelegt<br>";
}// if ENDE

else {
  print "<br>Ordner besteht bereits<br>";
}// else ENDE

...

lg
Key cee
 
Ich glaube du musst erst den Überordner (Werkstoffe) und dann den Unterordner (test) erstellen.
 
Wie mir scheint scheinst Du gleich eine ganze Verzeichnisstruktur damit anlegen zu wollen, was so natuerlich nicht geht.
Wenn Du willst, dass das der komplette Baum erstellt wird musst Du den dritten Parameter ($recursive) von mkdir() nutzen.

Ansonsten faellt mir auf, dass Dein Script in /html/fileadmin/php_dateien/ ausgefuehrt wird und ../fileadmin/Anzeigen/$WERT3/$WERT4 erstellen will.
Meiner Meinung nach fehlt da nochmal ../ am Anfange, denn mit dem .. was Du jetzt hast landest Du in fileadmin.
 
Dankeschön für die Antworten.


Habe nun das mit dem ../ und $recursive verändert:
PHP:
// Verzeichnisüberprüfen ggf. anlegen
$VERZEICHNIS = "../../fileadmin/Anzeigen/$WERT3/$WERT4";
echo $VERZEICHNIS;
if (!file_exists($VERZEICHNIS) || !is_dir($VERZEICHNIS)) {
  mkdir($VERZEICHNIS, $recursive = true);
  echo "<br>Ordner wird angelegt<br>";
}// if ENDE


Es wird nun der gewünschten Ordner angelegt! :-)

Aber die Datei wird dort nicht gespeichert. :(

...naja ich schätze mal es liegt an den Rechten,
denn als ich den Ordner öffnen wollte, kam eine Fehlermeldung:
Beim Öffnen auf dem FTP-Server ist ein Fehler aufgetreten. Stellen Sie sicher, dass Sie die erforderlichen Zugriffsrechte für den Ordner haben.

Details:
550 Failed to change directory


Dann werde ich erstmal auf Suche gehen!

Danke für Eure Hilfe.
 
Du setzt den Parameter falsch ein.
Wie gesagt, es ist der 3. Parameter. Schau mal in die Hife dazu. dafuer hab ich die ja verlinkt. ;)
 
Dennis Wronka hat gesagt.:
Du setzt den Parameter falsch ein.
Wie gesagt, es ist der 3. Parameter. Schau mal in die Hife dazu. dafuer hab ich die ja verlinkt. ;)

Hm...
Ich hatte es schon ungefähr so versucht:
PHP:
mkdir($VERZEICHNIS,0777, TRUE);

Aber es erschien dann diese Fehlermeldung:
Warning: mkdir() expects at most 2 parameters, 3 given in /html/fileadmin/php_dateien/profil_aendern.php on line 67


Ich habe es nun einfach mal anders versucht...
PHP:
if (!file_exists($VERZEICHNIS) || !is_dir($VERZEICHNIS)) {
  mkdir($VERZEICHNIS, TRUE);
  chmod($VERZEICHNIS, 0777);
  echo "<br>Ordner wird angelegt<br>";
}// if ENDE
...und bis jetzt konnte ich keine Fehler ausmachen, es funktioniert. :suspekt:
 
Zurück