Kniffliges zu Bildupload auf Apache - Localhost

Hi zusammen,
ich versuch mal das Problem zu verdeutlichen:

localhost = apache1.3 server (tatsächlich: H:\meinApache - Verzeichnis)
PHP:
//Wobei egal ob bilder/ ; ./bilder/ ; /bilder/ ; ... immer gleiche Fehlermeldung
BILDERVERZEICHNIS = define(BILDERVERZEICHNIS,"/bilder/");

Ich möchte einen Bildupload programmieren, der später im Netz eingesetzt werden soll und eigentlich funktioniert er auch schon ganz gut (Quellcode unten), aber

- Das upgeloadete Bild wird unter C:\WINNT\Temp\php46.tmp temporär hochgeladen und
abgespeichert. Wenn ich jetzt das Bild von o.g. Pfad in einen Pfad relativ zum localhost
(./bilder) verschieben möchte, kennt dieser natürlich den C:\.... - Wust nicht, da es ja auf
dem localhost keine C - Festplatte gibt, klar!
- Mach ich das ganze absolut, hängt sich bei der Anzeige des Bildes der Localhost auf, weil
er ja analog zum C - Laufwerk das H - Laufwerk nicht kennt.

Mir ist schon klar, dass das Problem wohl etwas wirr klingt und bitte schreibt, wenn was unklar ist...es ist echt blöd zum erklären.
Die Lösung wäre, dass man ihm beibringt, die temp. Uploads nicht unter C:\Winnt\temp zu speichern, sondern unter H:\meinApache ... dann wäre alles safe!
Ich glaube ja, dass es daran liegt, dass meine php.ini in C:\winnt liegt oder so...leider weiß ich nicht besser Bescheid und hoffe ihr könnt mir helfen.

Hier noch der Code:

PHP:
function pic_upload()
{
		if ($_FILES['bild']['error'] > 0)
		{
		   echo "Problem: ";
       		   switch ($_FILES['bild']['error'])
		   {
		      case 1: echo "Die Datei ist größer als upload_max_filesize."; break;
		      case 2: echo "Die Datei ist größer als max_filesize."; break;
		      case 3: echo "Die Datei wurde unvollständig hochgeladen."; break;
		      case 4: echo "Es wurde keine Datei hochgeladen"; break;
	           }
		   exit;
		}
		
		//Bildnamen ändern in ID.endung
		$help = explode (".",$_FILES['bild']['name']);
		//Max. ID um ein bla.jpg in (maxid+1).jpg umzunennen
                $SQL = "SELECT MAX(id) AS max FROM ".TABLE."";
		$query = mysql_query($SQL);
		$result = mysql_fetch_array($query);
		$name = $result['max']+1;
		$filename = $name.".".$help[count($help)-1];
		
		//Ueberpruefen
		if ($help[count($help)-1] != "jpg" && $help[count($help)-1] != "jpeg" && $help[count($help)-1] != "png" && $help[count($help)-1] != "gif")
		{
		   $msg = "Die hochzuladende Datei ist kein Bild, sorry!*Error";
		   return $msg;
		}
		//Ins Bildverzeichnis verschieben  <- PROBLEMPUNKT bei move_upload_file() !!
		$upfile = BILDERVERZEICHNIS.$filename;
		
		if (is_uploaded_file($_FILES['bild']['tmp_name']))
		{
		   echo "ok <br>";
		   if(!move_uploaded_file($_FILES['bild']['tmp_name'], $upfile))
		   {
		     $msg = "Problem: Datei konnte nicht in das Zielverzeichnis verschoben   werden.*Error";
                     return $msg;
				
		}
	     }
	     else
	     {
	        $msg =  "Problem: Hochladen gescheitert.*Error";
		return $msg;
	     }
  return $filename;
}

Die exakte Fehlermeldung bleib ich natürlich auch nicht schuldig:

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINNT\TEMP\php46.tmp' to 'localhost/bilder/2.jpg' in h:\meinApache\functions.php on line 46
 
Ich habs jetzt doch hinbekommen!
In der php.ini unter FileUploads den Pfad auf http://localhost (ggf. noch weitere Unterordner angeben).
Anschließend noch die übrigen Pfade anpassen, dann sollte es gehen. In meinem Fall werden die Bilder direkt auf den localhost geladen (eigentlich ist es witzigerweiße immernoch das WINNT - Verzeichnis) und dann über ./bilder weiterkopiert.
Eigentlich ganz einfach ;-)
Gute Nacht!
 

Neue Beiträge

Zurück