PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP-FTP Upload



shaitan
06-01-2004, 19:21
ich habe hier ein ftp-Upload script, was aber nicht so funktioneren will wie es soll. ich füge den Code mal ein:


<?php

// Die Variablen
$ftp_server = "ftp.meineadresse.dyndns.org";
$benutzername = "user";
$passwort = "passwort";

// Die Verbindung herstellen
$connection_id = ftp_connect("$ftp_server");

// Mit Benutzername und Kennwort anmelden
$login_result = ftp_login($connection_id, "$benutzername", "$passwort");

// überprüfen ob alles gutgegangen ist
if ((!$connection_id) || (!$login_result)) {
echo "<H1>Ftp-Verbindung nicht hergestellt!<H1>";
echo "<p>Verbindung mit ftp_server als Benutzer $benutzername nicht möglich!</p>";
die;
} else {
echo "<p>Verbunden mit ftp_server als Benutzer $benutzername </p>";
}

// Hochladen der datei
$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_ASCII);

// Upload-Status überprüfen
if (!$upload) {
echo "<p>Ftp upload war fehlerhaft!</p>";
} else {
echo "<p>Datei $slokale_datei auf $host als $zieldatei geschrieben </p>";
}

// Schließen der Verbindung
ftp_quit($connection_id);
?>


die verbindung wird korrekt hergestellt. ich bekomme aber folgende Fehlermeldung:

Warning: ftp_put(): 'STOR' not understood in /srv/www/htdocs/test/ftpupload.php on line 24

Ftp upload war fehlerhaft!

ich hab auch schon mal in der Zeile 24 geändert "FTP_ASCII in FTP_BINARY" aber das hat auch keinen Effekt.

Kann mir da mal jemand helfen?

Micha

Pingu
06-01-2004, 19:52
Folgendes habe ich in der Doku bei php.net gefunden:
I just try to upload some file with ftp_put and I always received the following error :
"Cannot STOR. Cannot change Port if not closed"

The solution is to set the passive mode on with ftp_pasv($conn_id, true);

Vielleicht behebt das auch Dein Problem.

Pingu

shaitan
06-01-2004, 20:07
ok, könnte passen ich probiers mal aus. Ich muss bloss mal sehen wie ich das da reinbastele ;)

shaitan
06-01-2004, 21:34
also ich hab das Script jetzt noch mal umgebaut. des Pssiv modus schein jetzt zu klappen. Ein wechsel ins Verzeichnis "Upload" hab ich auch noch eingefügt, der klappt auch. Aber die fehlermeldung lautet immer noch
"Warning: ftp_put(): 'STOR' not understood in /srv/www/htdocs/test/ftptest.php on line 36"

hier noch mal das neu gestrickte script



// Connect to firewall
$conn_id = ftp_connect("ftp.meinserver.dyndns.org");

// Open a session to an external ftp site
$login_result = ftp_login ($conn_id, "user", "pass");

// Check open
if ((!$conn_id) || (!$login_result)) {
echo "Ftp-connect failed!"; die;
} else {
echo "Connected.";
}

// turn on passive mode transfers
$mode = ftp_pasv ($conn_id, true) ;

//Check Mode
if (!$mode) {
echo "Passiv failed!"; die;
} else {
echo "Passiv Mode ON </p>";
}

//wechsel nach Upload
$change = ftp_chdir($conn_id, "/upload");

//Check Directory
if (!$change) {
echo "Kann nicht nach /upload wechseln"; die;
} else {
echo "Verzeichnis ist /upload </p>";
}

// Hochladen der datei
$upload = ftp_put($conn_id, $zieldatei, $lokale_datei, FTP_BINARY);

// Upload-Status überprüfen
if (!$upload) {
echo "<p>Ftp upload war fehlerhaft!</p>";
} else {
echo "<p>Datei $slokale_datei auf $host als $zieldatei geschrieben </p>";
}

// Schließen der Verbindung
ftp_quit($conn_id);


PS: ich hab das Script mal auf meinem Webserver getestet, da klappt das wunderbar. Aber auf meinem Homeserver will das nicht klappen :mad:

johnpatcher
11-01-2004, 21:04
auf deinem homeserver? hast du 2 oder mehrere pc daheim, also ein netzwerk und den ftp server auf dem einen und das script auf dem anderen, oder alles auf einem? wenn alles auf einem ist probier doch einfach mal als adresse: "127.0.0.1"! das hilft manchmal wunder! wenn du den ftp server auf nem anderen pc hast, dann probier doch mal die ip vom server! das geht auch "extern". also statt www.google.de kannst du auch die direkte ip eingeben! ich glaube es liegt irgendwie an der dns funktion oder so! so habe ich schon einige probleme mit verbindung zu andern machichen gelöst

johnpatcher

shaitan
14-01-2004, 21:54
ich probiers mal aus. Danke.
Ich melde mich dann noch mal