Bilder upload - Problem

10x10

Mitglied
Hi,
ich hab ein Problem beim Uploaden meiner Bilder.

Local funkts super, aber online bekomm ich immer eine Fehlermeldung:
Warning: getimagesize() [function.getimagesize]: open_basedir restriction in effect. File(D:\_temp\php\php2B3C.tmp) is not within the allowed path(s):
(D:/_user/201/p/e/xxx/xxx.com/www) in D:\_user\201\p\e\xxx\xxx.com\www\admin\gallerie_admin.php on line 51

Warning: getimagesize(D:\_temp\php\php2B3C.tmp) [function.getimagesize]: failed to open stream: Operation not permitted in D:\_user\201\p\e\xxx\xxx.com\www\admin\gallerie_admin.php on line 51


Hier das Upload-Script:

if(isset($_POST["kollektionsnr"]))
{
$aendern=$_POST['aendern'];
$anlegen=$_POST['anlegen'];
$einfuegen=$_POST['einfuegen'];
$loeschen=$_POST['loeschen'];
$datei = $_FILES["upload"];
$b_name=$datei["tmp_name"];
$b_originalname=$datei["name"];
$b_originalname = preg_replace("|[^a-zA-Z0-9_.]|","",$b_originalname);
if(($_POST["kollektionsnr"]!=0)&&($b_originalname!=""))
{
foreach($_POST as $key=>$unit)
{
if(get_magic_quotes_gpc()){
$$key=trim($unit);
}
else{
$$key = addslashes(trim($unit));
}
}
$fehler = "";
if($datei["name"])
{
$imagedata=getimagesize($b_name);
$breite=$imagedata[0];
$hoehe=$imagedata[1];
$y=$imagedata[1];
if ($imagedata[2]!=2)
{
$fehler="Bei der Datei handelt es sich nicht um ein jpg!";
}
else if(file_exists("../bilder/gallery/".$b_originalname))
{
$fehler="Bild bereits vorhanden!";
}
if($fehler=="")
{
if($y>385)
{
$y=385;
$x=(($imagedata[0]/$imagedata[1])*$y);
$neueBreite=$x;
$image=imagecreatefromjpeg($b_name);
$tumb=imagecreatetruecolor($x,$y);
imagecopyresized($tumb,$image,0,0,0,0,$x,$y,$imagedata[0],$imagedata[1]);
imagejpeg($tumb,"../bilder/gallery/".$b_originalname);
}
else copy($b_name,"../bilder/gallery/".$b_originalname);
$y=135;
$x=(($imagedata[0]/$imagedata[1])*$y);
$image=imagecreatefromjpeg($b_name);
$tumb=imagecreatetruecolor($x,$y);
imagecopyresized($tumb,$image,0,0,0,0,$x,$y,$imagedata[0],$imagedata[1]);
imagejpeg($tumb,"../bilder/gallery/p_".$b_originalname);
mysql_query("INSERT INTO bilder VALUES('','$b_originalname','$neueBreite','$kollektionsnr')");
header("LOCATION:".$_SERVER["PHP_SELF"]."?aendern=".$aendern."&anlegen=".$anlegen."&einfuegen=".$einfuegen."&loeschen=".$loeschen."&".session_name()."=".session_id()."&erfolg2=1#2");
}
else
{
header("LOCATION:".$_SERVER["PHP_SELF"]."?aendern=".$aendern."&anlegen=".$anlegen."&einfuegen=".$einfuegen."&loeschen=".$loeschen."&fehler2=".$fehler."#2");
}
}
}
else
{
$fehler="Bitte gib eine Gallerie und ein Bild an!";
header("LOCATION:".$_SERVER["PHP_SELF"]."?aendern=".$aendern."&anlegen=".$anlegen."&einfuegen=".$einfuegen."&loeschen=".$loeschen."&fehler2=".$fehler."#2");
}
}


Wird mit diesem Formular initialisiert:

echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data">';
if(isset($_GET['erfolg2']))echo'<tr><td colspan="2" class="erfolg" height="10" align="left" valign="top">Bilder erfolgreich hochgeladen!</td></tr>';
if(isset($_GET['fehler2']))echo'<tr><td colspan="2" class="fehler" height="10" align="left" valign="top">'.$_GET['fehler2'].'</td></tr>';
echo'<tr>
<td class="schrift" height="10" width="60">Gallerie:</td>
<td valign="top" height="10">
<select name="kollektionsnr">';
$res=mysql_query("SELECT id,kollektionDeutsch FROM gallerien ORDER BY id");
if(mysql_num_rows($res)>0)
{
while($zeige = mysql_fetch_array($res))
{
$kollektionsnr = $zeige["0"];
$kollektion = $zeige["1"];
echo "<option value='".$kollektionsnr."'>".$kollektion."</option>";
}
}
echo' </select>
</td>
</tr>
<tr>
<td class="schrift" height="10">Bild:</td>
<td valign="top"><input type="hidden" name="MAX_FILE_SIZE" value="2097152"><input type="file" name="upload" size="27"></td>
</tr>
<tr>
<td height="10" valign="top">&nbsp;</td>
<td>
<input type="hidden" name="aendern" value="'.$_GET['aendern'].'">
<input type="hidden" name="anlegen" value="'.$_GET['anlegen'].'">
<input type="hidden" name="einfuegen" value="'.$_GET['einfuegen'].'">
<input type="hidden" name="loeschen" value="'.$_GET['loeschen'].'">
<input type="submit" name="senden" value="speichern"></td>
</tr>
</form>';

Bitte um Hilfe!
 
Du musst in der php.ini bei dem Wert open_basedir dein TMP-Dir mit angeben, denn ansonsten erlaubt dir PHP nicht auf dieses Verzeichnis zuzugreifen.
 
Erstmal danke für die schnelle Antwort.

Local funktionierts ja super, deswegen versteh ich das mit der php.ini verändern nicht ganz.
Online hab ich doch keinen Zugriff auf die php.ini des Servers meines Providers, oder?

Was bedeutet TMP-Dir?
 
wenn du natürlich keinen Zugriff auf die PHP.ini hast, hast du ein Problem.. Dann wird dein Provider nicht wollen, dass du einen Datei Upload erlaubst... Meines Wissens nach hast du dann auch keine andere Möglichkeit - außer du ziehst mit der Seite um oder fragst mal bei deinem Provider an.
Im Tmp-Verzeichnis (Temporäres Verzeichnis) werden zB. Sitzungsdaten oder auch hochgeladene Dateien gespeichert.
 
Gibt bestimmt manche Freehoster, die das verbieten damit man den Service nicht ausnutzt. Bei PaidHostern kann ichs mir eigentlich nicht vorstellen, möglich ist es jedoch...
 
Ich zahl gute 80€ im Jahr für 500MB WS bei meinem Provider!
Hab noch keine Antwort von meinem Provider auf meine Anfrage bekommen.
Wär blöd wenn es nicht gehen würd.

Danke für die Hilfe.
 
Zurück