Probleme mit copy()

djnelly

Erfahrenes Mitglied
Hallo...

ich habe folgendes Uploadscript:

PHP:
<?	

include("../config.php");
$verbindung = mysql_connect($db_server,$db_user,$db_pass);
if (!verbindung) {
echo "<center>Keine Verbindung zur Datenbank</center>";

exit;
}
mysql_select_db($db_db);

if($submit)	{
	if($typ == "buffet") {
	chdir("../bilder/buffet/");
	}
	if($typ == "marken") {
	chdir("../bilder/marken/");
	}	
	$uploadname = $file_name;
	copy ($file,$uploadname);
	echo "<b><center>Das Bild mit dem Namen $uploadname wurde erfolgreich hochgeladen<br><br><a href=\"javascript:window.close()\">Fenster schliessen</a></b></center>";
	}
if($submit) { exit; }
?>


<form action="<? echo $php_self?>" method="post" enctype="multipart/form-data">
<table  border="0" align="center">
  <tr>
    <td><strong>Hier kannst du ein weitere Bild hochladen.</strong></td>
  </tr>
  <tr>
    <td><input type="file" name="file"></td>
  </tr>
  <tr>
    <td><input name="submit" type="submit" id="submit" value="Hochladen"></td>
  </tr>
</table>
</form>

Und dort bekomme ich den Fehler:

Warning: copy(): open_basedir restriction in effect. File(/tmp/phpyDUhX4) is not within the allowed path(s): (/home/web128) in /home/web128/html/admin/aupload.php on line 20

Ich habe schon nach Fehlern gesucht und versucht es anders zu machen, aber ohne erfolg..
Offline im Webserver es..


Danke
 
PHP:
<form action="<? echo $php_self?>" method="post" enctype="multipart/form-data">
Nach $PHP_SELF muss ein Semikolon.

Ich hab noch nicht viel Ahnung von MySQL, da ich fast alles bisher mit txt- Dateien mache. Allerdings würde ich ssagen, das copy() als Dateifunktion auch nur im Zusammenhang mit Datein funktioniert und wage zu bezweifeln, dass copy() auch in Zusammenhang mit SQL .

Berichtigt mich, wenn ich falsch liege.
 
Das hat einfach nur was damit zu tun das Du keine Rechte besitzt eine Datei hochzuladen.

Warning: copy(): open_basedir restriction in effect. File(/tmp/phpyDUhX4) is not within the allowed path(s): (/home/web128) in /home/web128/html/admin/aupload.php on line 20

versuch den UploadPfad einfach mal als absolute Angabe und setzt die Rechte auf 777 dann müsste es klappen.

Absolute Pfad Angabe könnte so aussehen.

http://www.deineDomain.tld/dein/Ordner/Pfad/

Gruß Mirko
 
Original geschrieben von Mirko D
Absolute Pfad Angabe könnte so aussehen.

http://www.deineDomain.tld/dein/Ordner/Pfad/
Bitte, wenn Du schon was erklärst, dann bitte auch richtig! :rolleyes:

Wenn Du den Pfad so angibst, dann könntest Du Probleme bekommen. Ich glaube kaum, das Du über die externe URL in einen Ordner auf dem Server schreiben darfst.

Original geschrieben von Tucker
Ich hab noch nicht viel Ahnung von MySQL, da ich fast alles bisher mit txt- Dateien mache. Allerdings würde ich ssagen, das copy() als Dateifunktion auch nur im Zusammenhang mit Datein funktioniert und wage zu bezweifeln, dass copy() auch in Zusammenhang mit SQL .

Berichtigt mich, wenn ich falsch liege.
Ok, das tue ich hiermit ;) Also so wie ich das erkenne, dann will er doch einfach nur ne Datei kopieren oder? Es wird zwar eine Verbinung zur Datenbank hergestellt, aber das wars dann auch erstmal mit mySQL.

Original geschrieben von djnelly
Ich habe schon nach Fehlern gesucht und versucht es anders zu machen, aber ohne erfolg..
Also, Du solltest anstelle der [phpf]copy[/phpf]-Funktion lieber die Funktion [phpf]move_uploaded_file[/phpf] verwenden.

Die Funktion erwartet zwei Parameter: Zum einen den Temporären Dateinamen, zum anderen den kompletten Pfad zum Ordner, wo die Datei gespeichert werden soll inkl. dem Dateinamen.

Also zum Beispiel:

PHP:
$strPath        = '../uploads';
$strFilename    = 'meinBild.jpg';

$doUpload = @move_uploaded_file($_FILES['file']['tmp_name'],$strPath.'/'.$strFilename);

if($doUpload) {
    echo 'Upload erfolgreich';
} else {
    echo 'Upload fehlgeschlagen';
}
Das Script speichert die hochgeladene Datei (hier: ein JPEG-Bild) im Ordner uploads, welches sich eine Ebene über dem Ordner befindet, in dem das PHP-Script liegt.

Also:
Code:
/htdocs/            <- webroot (also www.meinedomain.tld)
/htdocs/uploads     <- hier werden die uploads hinkopiert
/htdocs/scripts     <- hier liegt das php script
 
das hilft mir erstmal weiter...

danke


Ich habe das script auf einen lokalen Webserver geschrieben und getestet.

Kannst du mir sagen, warum es lokal geht und online nicht?
 
Zurück