PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiupload wird nicht dargestellt


AI
19.04.2005, 10:00:26
Hallo Leute

mal wieder ein Problem: Ich will eine txt-Datei auf einen Server laden, der sich in einem interenen Netzwerk befindet. FTP funzt nicht. Da ich das gerne per PHP machen möchte habe ich ein Testscript geschrieben:

<form action="newdb.php" method="post" enctype="multipart/form-data">
<input type="file" name="datei">
<input type="submit" name="submit" value="Wartungplan laden">
</form>
<?
$d3 = chmod ("/PHP/uploadtemp/", 0777);

if (isset($_FILES['datei'])){

$dateiname = $_FILES['datei']['name'];
$tmpname = $_FILES['datei']['tmp_name'];
$d2 = chmod ($tmpname, 0777);
$d1 = chmod ($dateiname, 0777);
//move_uploaded_file($d2,$d4.$dateiname);
echo $tmpname;
$name = str_replace(".txt","","$dateiname");

So weit, so gut. Aber wenn ich jetzt auf dem Server die tmp-Datei suche findet er sie nicht, obwohl ich durch echo $tmpname den Ort angezeigt bekomme. Das Script liefert auch keine Fehlermeldung. Was kann es sein?

Benutze Apache:1.3.31 und PHP 5.0

xabbuh
19.04.2005, 10:36:09
So würde es funktionieren:

<?php
if (isset($_FILES['datei'])){
$dateiname = $_FILES['datei']['name'];
$tmpname = $_FILES['datei']['tmp_name'];

move_uploaded_file($tmpname, '/pfad/' . $dateiname);
?>


Die chmod() Zeilen kannst du also sparen.

Je nach Bedarf kann dann noch diese Zeile folgen:

<?php
chmod('/pfad/' . $dateiname, 0777);
?>

AI
19.04.2005, 10:52:50
Geht leider nicht. bzw wird wieder keine Datei dargestellt.

Das wird ausgegeben:
C:PHPuploadtempphp7E3.tmp

Das ist doch der Ort auf dem Server, wo die Datei abgelegt wird wenn ich sie nicht mit move_uploaded_file weiterschiebe. Also müsste sie dort nach dem "submit" doch liegen oder irre ich da? Ich vermute iregenwie hat das was mit dem server zu tun oder? move_uploaded_file liefert auch ein false zurück.

xabbuh
19.04.2005, 12:29:20
Setz error_reporting mal auf E_ALL und aktiviere display_errors. Welche Fehlermeldungen kriegst du dann?

AI
19.04.2005, 14:41:59
Ich bekomme weiterhin keine Fehlermeldung.


Ist das so korrekt?
error_reporting(E_ALL);
ini_set('display_errors', 1);

Ich vermute eher, daß das was mit dem Server zu tun hat.

xabbuh
19.04.2005, 15:25:18
Und wie sieht dein Script im Moment aus?

AI
19.04.2005, 15:46:21
<html>
<head>
<title>Web-Vorlage</title>
</head>
<Body>
<form action="newdb.php" method="post" enctype="multipart/form-data">
<input type="file" name="datei">
<input type="submit" name="submit" value="Wartungplan laden">
</form>
<?
error_reporting(E_ALL);
ini_set('display_errors', 1);
$d3 = chmod ("/PHP/uploadtemp/", 0777);

if (isset($_FILES['datei'])){

$dateiname = $_FILES['datei']['name'];
$tmpname = $_FILES['datei']['tmp_name'];

if(move_uploaded_file($tmpname,'/wart/'.$dateiname)){
echo $tmpname;
}
$name = str_replace(".txt","","$dateiname");

}
include_once ("backbutton.php");
include_once ("footer.php");
?>
</Body>
</html>


Dabei eben keine Fehlermeldund. ich glaub mich tritt ein Pferd......
Ich danke schon langsam über eine andere Lösung nach!

xabbuh
19.04.2005, 16:07:52
$d3 = chmod ("/PHP/uploadtemp/", 0777);

Was soll die Zeile denn?

if(move_uploaded_file($tmpname,'/wart/'.$dateiname)){
echo $tmpname;
}
Existiert das Verzeichnis wart? Hast du Schreibrechte in dem Verzeichnis?

AI
19.04.2005, 17:06:38
$d3 sollte nur das Verzeichnis für die tmp-Dateien auf chmod 777 umstellen. Ja, der "wart" Ordner existiert im Verzeichnis des Scripts.
Ich muss doch auch Ordner frei geben.

chris17
19.04.2005, 17:31:48
Win || Lin?

if(move_uploaded_file($tmpname,'./wart/'.$dateiname)){
//...

AI
19.04.2005, 17:43:03
WIN 2000 mit Apache! Habe den . hizugefügt. Aber das Verhalten bleibt gleich. Es passiert einfach nichts!


bald verzweifelt ist..................

|Coding
19.04.2005, 18:16:04
...sollte nur das Verzeichnis für die tmp-Dateien auf chmod 777 umstellen...
Was wuerdest Du damit erreichen?

AI
19.04.2005, 18:33:50
Hatte gedacht, daß sie erst garnicht auf dem Server laden und dann wiederum durch "move_uploaded_file()" weitergeleitet. Deshalb dachte ich den Ordner chmod 777 zu geben. Ist das denn überhaupt sinnvoll? Man kann doch auch Ordener diese Berechtigung geben, oder?

xabbuh
19.04.2005, 18:48:32
Hatte gedacht, daß sie erst garnicht auf dem Server laden und dann wiederum durch "move_uploaded_file()" weitergeleitet. Deshalb dachte ich den Ordner chmod 777 zu geben. Ist das denn überhaupt sinnvoll? Man kann doch auch Ordener diese Berechtigung geben, oder?
Diese Rechtesystem gibt es aber afaik nur unter UNIX/Linux und nicht unter Windows.

AI
20.04.2005, 09:43:15
OK wieder was dazu gelernt.....DANKE!

xabbuh
20.04.2005, 10:20:40
Überprüfe doch mal mit is_dir() vor dem Upload, ob das Verzeichnis überhaupt existiert und mit is_writable(), ob du in das Verzeichnis schreiben darfst.

AI
20.04.2005, 11:04:49
Habe ich ausprobiert! Kam jeweils ein false bei rum. Habe jetzt für meine Idee eine ganz andere Lösung in Betracht gezogen. Ich breche hier auch ab weil es aus welchen Gründen nicht gehen will. Trotzdem nochmal DANKE für eure speziell xabbuh's Hilfe.

Werde mich aber gleich im SQL-Bereich nochmal an Euch wenden.

Euer

AI

xabbuh
20.04.2005, 11:37:49
Habe ich ausprobiert! Kam jeweils ein false bei rum.
Dann hast du entweder den Pfad zum Verzeichnis falsch angegeben, in das die Datei verschoben werden soll oder das Verzeichnis existiert gar nicht.

AI
20.04.2005, 11:48:13
Ich gebe doch den Pfad relativ an oder? Also ausgehend von der Lage des Scripts.

chris17
20.04.2005, 11:59:16
Ich gebe doch den Pfad relativ an oder? Also ausgehend von der Lage des Scripts.
Schau mal in der phpinfo() nach. Was stehen da für Werte in "TMP"/"TEMP" unter "Environment"?

Aber wie schon gesagt wurde, unter WIN musst Du da nix an den Berechtigungen drehen.

Was steht unter "file_uploads"? Ist's überhaupt eingeschaltet?

xabbuh
20.04.2005, 11:59:44
Kannst du mal deine Verzeichnisstruktur posten?