PHP file upload

chrisi01

Romy lieb haben
ID: 101113
L
26 November 2008
2.854
238
hi

versuche das erste mal mit php eine Datei auf dem Server hoch zu laden.

Hier mal mein Script (ohne große Sicherheiten jetzt aber ist erst mal egal verwende eh nur ich):
PHP:
<?
$zufall = md5(5+rand(1,1000)+time());
if(isset($_POST['send']) && $_POST['send']=="1")
{
//echo $_FILES['asddatei']['tmp_name'];
  if(!move_uploaded_file($_FILES['asddatei']['tmp_name'],"tmp/123456.txt"))
  {
    echo "Kopierfehler";
  }
  else
  { 
    echo "File copyd";
  }
}
else
{
?>
<form enctype="multipart/form-data" action="up.php" method="post">
<input type="hidden" name="max_file_size" value="1000000000000000000000">
<input type="hidden" name="send" value="1">
file senden: <input name="asddatei" type="file">
<input type="submit" value="senden">
</form>
<?php } ?>


ich erhalte immer Kopierfehler. Wenn ich in Zeile 5 $_FILES['xmldatei']['tmp_name'] ausgeben lasse ist die Variable leer.

Bin mir auch beim kopieren nicht ganz sicher wie ich das Verzeichnis angeben muss:
Script liegt am Server auf /var/www/test/up.php
Die Datei soll nach /var/www/test/tmp
Zugreifen dann über https://server/test/up.php
muss ich jetzt bei move_uploaded_file() tmp/filename.endung angeben oder test/tmp/filename.endung? vermute ersteres zumindest verstehe ich es auf php.net so.
Achja der tmp Ordner hat natürlich chmod 777

Danke schon mal für die Hilfe.

mfg

Chris
 
Hm, klingt komisch. Mal so ein paar sachen zuerst:
Kuck mal ob beim upload was schiefgeht (PHP-Seitig) mit
Code:
$_FILES["asddatei"]["error"] > 0

Dann seh ich da noch dass du in ein unterfolder tmp kopieren willst, existiert das Folder oder meinst du doch /tmp/?

Ansonsten sieht alles richtig aus, sogar der enctype.
 
hi

danke schon mal in deiner genannten Variable steht eine 2 was auch immer das bedeutet. (ich geh mal wieder googlen)


Eine Übersicht wie das array aufgebaut ist wäre mal interessant ich finde einfach nichts per google.

wo das Script liegt und wohin ich kopieren will steht ja eigentlich schon oben

Script liegt am Server auf /var/www/test/up.php
Die Datei soll nach /var/www/test/tmp/dateiname.endung
Zugreifen auf das Script dann über https://server/test/up.php

Kann es an irgendeiner Servereinstellung liegen? Wenn ja welche?

edit: Das Problem lag daran das ich max_file_size wohl etwas zu groß gewählt wurde :ugly: jetzt bringt er PHP Fehler aber das sollte ich selbst gar hinbekommen kann ja nur ein Verzeichnisproblem sein Danke dir vielmals für die Variable

edit2: Und nun funzt es :) https://www.htmlgoodies.com/beyond/php/article.php/3472561 als Info was die Zahlen in der Variable bedeuten falls mal wieder wer das gleiche Problem hat

mfg

Chris
 
Zuletzt bearbeitet:
Notfalls haette ich auch ein print_r() benutzt um zumindest das $_FILES array auszulesen. ^^

Freut mich dass du es doch noch recht flink hinbekommen hast ^^
 
hab das Problem auf einen andere (Test)server nun wieder.

ein error_reporting(E_ALL); behauptet:

Notice: Undefined index: asddatei in /var/www/apache2-default/img/webseite/test.php on line 6
Kopierfehler
Notice: Undefined index: asddatei in /var/www/apache2-default/img/webseite/test.php on line 9

Script dazu:

PHP:
<?
error_reporting(E_ALL);
$zufall = md5(5+rand(1,1000)+time());
if(isset($_POST['send']) && $_POST['send']=="1")
{
  if(!move_uploaded_file($_FILES['asddatei']['tmp_name'],"tmp/123456.txt")) //Zeile 6)
  {
    echo "Kopierfehler";
    echo $_FILES['asddatei']['error']; //Zeile 9
  }
  else
  { 
    echo "File copyd";
  }
}
else
{
?>
<form enctype="multipart/form-data" action="test.php" method="post">
<input type="hidden" name="max_file_size" value="500">
<input type="hidden" name="send" value="1">
file senden: <input name="asddatei" type="file">
<input type="submit" value="senden">
</form>
<?php } ?> 
?>

da andere Scripte, die schon funktioniert haben, auf dem Server auch nicht gehen vermute ich es liegt an einer Servereinstellung. Kann das $_FILES array irgendwie deaktiviert sein oder so? So wie ich die Fehlermeldung lese ist das array ja nicht vorhanden / der index asddatei fehlt.

Betriebssystem Linux (debian 4.0) apache php und mysql über apt-get installiert.

mfg

Chris
 
Zuletzt bearbeitet:
danke dir aber -->

aus der php.ini:

file_uploads = On
...
upload_max_filesize = 2M
...
;upload_tmp_dir = (auskommentiert, werde jetzt mal versuchen ein eigenes Verzeichnis zu benutzen)
...
post_max_size = 8M

sieht eigentlich alles ganz gut aus *grübel*

noch wer Ideen parat? Irgendwelche Logs die man durchforsten kann? Irgendwelche Variablen noch da die man ausgeben könnte und ich nicht kenne?

edit1: es ist immer schön wenn man recht hat hab upload_tmp_dir gesetzt auf ein Verzeichnis mit chmod 777 und jetzt gehts danke für den Tipp tH

mfg

chris