Fehler bei Thumbnailerzegung

chickendeath

Grünschnabel
Hallo alle zusammen,

ich habe mich schon durch einige Beiträge hier durchlesen können die mein Thema betreffen. Leider habe ich aber keine entsprechende Antwort zum Problem gefunden. Ich habe einen Multiupload gebaut, mit dem ich in einer Schleife beliebig viele Bilder in einen bereits erstellen Ordner hochladen kann. Nun möchte ich davon auch noch Thumbnails haben und habe deswegen auch eine Thumberzeugung mit in die Schleife gebaut. Das Original lädt er hoch, bei dem Thumbs zeigt er folgenden Fehler

Code:
Warning: imagejpeg(): Unable to open 'uploads/gallery/thumbails/9.jpg' for writing in /home/www/web6/html/test/admin/gallery_upload.php on line 34

Server Einstellung:

CHMOD beider Verzeichnisse auf 777
JPG-Support enabled
safe_mode Off Off
safe_mode_exec_dir /home/www/empty/ no value
safe_mode_gid Off Off
safe_mode_include_dir no value

GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

Folgender Code:

PHP:
<?php
// In Tabelle 'gallery_text' Beiträge zählen, danach dann die $area bestimmen
$result2 = mysql_query("SELECT COUNT(*) as total FROM gallery_text");
$row2 = mysql_fetch_object($result2);
$area = $row2->total++;

// In Tabelle 'gallery' Dateien zählen, danach Filename erstellen
$result = mysql_query("SELECT COUNT(*) as total FROM gallery");
$row = mysql_fetch_object($result);
$total = $row->total++;

$uploadNeed = $_POST['uploadNeed']; // Schleifenwert

for($x=0;$x<$uploadNeed;$x++)
{
 // Kopieren, Dateien zerlegen - umbenennen
 $file_name = $_FILES['uploadFile'. $x]['name'];
 $file_name = stripslashes($file_name);
 $file_name = str_replace("'","",$file_name);
 $ext = strrchr($file_name,'.');
 $copy = copy($_FILES['uploadFile'. $x]['tmp_name'], "uploads/gallery/original/$total$ext"); // Kopiervorgang erfolgreich?

  // Thumbnail erstellen
   $bild = $total.$ext;
   $size=getimagesize("uploads/gallery/original/" . $bild);
   $breite=$size[0];
   $hoehe=$size[1]; 

	$neueHoehe = 100;
	$neueBreite = 100;

   $altesBild=ImageCreateFromJPEG("uploads/gallery/original/" . $bild);
   $neuesBild=ImageCreate($neueBreite,$neueHoehe);
   ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
   ImageJPEG($neuesBild, "uploads/gallery/thumbails/". $bild, 75); 

	imagedestroy($altesBild);
	imagedestroy($neuesBild);

  // Dateinamen eintragen
  $eintrag = "INSERT INTO gallery (bild, area) VALUES ('$total$ext', '$area')";

  $eintragen = mysql_query($eintrag);
 
  if($copy)
  {
   echo "$file_name umgenannt in $total$ext| Upload erfolgreich!<br>";
  }
   else
  {
  echo "$file_name | Upload nicht möglich!<br>";
  }
  $total++;
}
?>

Habe schon alles mögliche versucht, weiß aber nicht wo mein Fehler liegt. Alle Verzeichnisse bestehen bereits! Für Hilfe wäre ich sehr dankbar.

MfG chickendeath
 
Hi!

Wie sieht denn deine Verzeichnisstruktur genau aus? Da wird vermutlich der Fehler sein.
Mit is_exists($filename) kannst du überprüfen, ob eine Datei oder ein Verzeichnis existiert.

Ansonsten mein Tipp: Verwende grundsätzlich absolute Pfade (absolut zu /). Das würde ich dann aber über Konfigurations-Variablen machen. Alternativ / Ergänzend kannst du auch $_SERVER['DOCUMENT_ROOT'] verwenden. In dieser Variablen ist das Root-Verzeichnis deiner Homepage gespeichert.

Mamphil
 
Hi Mamphil,

ich bin deinem Tipp mit den absoluten Pfaden nachgegangen und habe leider dieselbe Fehlerausgabe. Bzgl. der Konfigurations-Variablen habe ich keine Zugriffe, da der Server nicht in meiner Macht ist. Leider bin ich, trotz deines guten Tipps, wieder am Anfang.

MfG chickendeath
 
Hi!

Konfigurations-Variable bedeutet bei mir, dass du für dein gesamtes Projekt ein Config-File erstellst, in dem du selbst Variablen (z. B. ein Array $config mit den Elementen $config['img_path']) erstellst und darin die Pfadangaben zentral speicherst.

Schau bitte einmal nach, ob
1.) das Verzeichnis uploads/gallery/thumbails/ wirklich chmod 0777 hat.
2.) im Verzeichnis uploads/gallery/thumbails/ eine Datei 9.jpg schon existiert und diese vom Webserver nicht überschrieben werden kann.

Mamphil
 
CHMOD 777 ist, wie schon vorher, noch aktiv und eine gleichnamige datei existiert nicht. Ich stehe das erst mal vor einem Rätsel. Leider weiß ich auch nicht was ich noch anschwingen kann, um diese Diskussion hier aufrecht zu erhalten. Das ganze ist mir irgendwie ein Rätsel und ich komme nicht dahinter.

MfG chickendeath
 
Ich glaube es ja nicht....
Ich bin seit einer woche intensivst am suchen und versuche meinen logischen Fehler herauszufinden und dann schreibe ich das wichtigste falsch! Das passiert, wenn man zu lange auf sachen schaut und manche als selbstverständlich hinnimmt. Deswegen bringt es oft viel, wenn man einen Zweitkorrektor hat. Mamphil, ich weiß nicht wie ich dir danken kann bzw. soll - aber du hast mir sehr weitergeholfen. Denn jetzt läuft alles wie erwartet und ich ärgere mich grün und blau über diesen Fehler!

*haut sich selbst mit der hand gegen die stirn*

MfG chickendeath
 
Hi!

Noch einmal mein Tipp - der auch helfen kann, diesen Fehler zu vermeiden:
Verwende für solche Ordner eigene Konfigurationsvariablen. Wenn z. B. in einer Extra-Datei die gesamte Konfiguration zusammengefasst ist und dort alle Pfadangaben untereinander stehen, fallen solche Fehler eher auf, als sie irgendwo zwischen den Codezeilen zu suchen.

Zum Thema Programmierstil: Ich empfehle dir dringen, dich an die PEAR-Coding Standards zu halten: http://pear.php.net/manual/en/standards.php - damit wird der Code wirklich übersichtlich(er).

Mamphil
 
Zurück