[PHP] Per PHP einen Ordner erstellen

HardwarePope

Cadet 4th Year
Registriert
Feb. 2004
Beiträge
114
Hallo liebe Leute,

und wieder einmal bin ich auf ein Problem gestoßen. Ich möchte Folgendes tun:
Ich habe ein Bilderuploadskript geschrieben, wo ich Bilder hochladen kann und gleichzeitig dem Bild in einer MySQL-Datenbank Daten hinzufügen kann wie z.B. den Aufnahmeort des Bildes oder ein Kommentar. Das aber nur zur Vollständigkeit halber, denn das funktioniert prima.

Wo mein Problem liegt, ist, dass ich die Bilder beim Uploaden in verschiedene Kategorien sortiere und je nach Kategorie, das Bild in den jeweiligen Kategorieordner einsortiert werden soll. Wenn ich jetzt eine neue Kategorie (die Kategorien sind immer durch Zahlen definiert) erstelle, muss folglich auch ein neuer Ordner auf dem Server ersellt werden, der die neue Kategorienummer trägt.
Und nun sind wir endlich bei der Frage angelangt ;) : Wie erstelle ich mit PHP einen neuen Ordner?

Wer es wissen will, ich lade die Bilder hoch und sie werden dann mit den PHP-Imagefunktionen auf 800x600 und eine Miniaturansicht angepasst. Der Code dazu sieht so aus:

PHP:
// Noch ein wenig Code davor, der die Postvariablen definiert und überprüft, ob die Variablen,
// die unten in die Datenbank eingetragen werden, im Formular eingetragen wurden 

  $image_query = getimagesize($image);

  if($image_query[0] >= 799 AND $image_query[1] >= 599 AND $image_query[2] == 2 AND $image_query[0] / $image_query[1] > 1)
  {
    mysql_query("INSERT INTO xxx SET category = '$category', date ='$date', place = '$place', comment = '$comment'");
    $tb = "_tb";
    $filename = mysql_insert_id();

    $old_image = imagecreatefromjpeg($image);
    $new_image = imagecreatetruecolor(800, 600);
    imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, 800, 600, $image_query[0], $image_query[1]);
    imagejpeg($new_image, "../bilder/$category/$filename.jpg");

    $old_image2 = imagecreatefromjpeg($image);
    $new_image2 = imagecreatetruecolor(133, 100);
    imagecopyresampled($new_image2, $old_image2, 0, 0, 0, 0, 133, 100, $image_query[0], $image_query[1]);
    imagejpeg($new_image2, "../bilder/$category/$filename$tb.jpg");

    imagedestroy($old_image);
    imagedestroy($new_image);
    imagedestroy($old_image2);
    imagedestroy($new_image2);
  }

Ich bedanke mich schon einmal für Hilfe; wenn es sich jemand nicht verkneifen kann, irgendetwas am Code verbessern zu wollen, sind auch solche Beiträge akzeptiert :D (trotzdem aber bitte auf mein tatsächliches Problem antworten)

Gruß, HardwarePope
 
Danke, das hat funktioniert mit der Funktion.

Jedoch hat das weitere Rummurksen dann nimmer geklappt :D . Er hat zwar wunderbar den neuen Ordner erstellt aber dann kommt unter anderem dieser Fehler:

Warning: imagejpeg() [function.imagejpeg]: SAFE MODE Restriction in effect. The script whose uid is 604 is not allowed to access /home/webserver/XXX/public_html/bilder/2 owned by uid 2 in /home/webserver/XXX/public_html/admin/upload_pics_sent.php on line 29

Mein relevanter Code sieht immer noch wie vorher aus, jedoch wurde dies noch am Anfang hinzugefügt:
PHP:
if(!file_exists("../bilder/$category"))
  {
    mkdir("../bilder/$category", 0777);
  }
 
Hallo,

der Fehler wird durch den PHP-SafeMode hervorgerufen.
Im SafeMode ist es nur erlaubt Änderungen an Ordnern/Dateien (bzw. Änderderungen in Verzeichnissen) vorzunehmen, die auch die gleiche User-ID besitzen.
Am einfachsten solltest du dem Problem aus dem Weg gehen können, indem du den entsprechenden Ordner mit der oben genannten FTP-Funktion erzeugst.
Dann sollte dieser auch eine entsprechende UID haben und der Zugriff beim Zugriff mit der image-Funktion nicht verweigert werden.

MfG mh1001
 
Zurück
Oben