FTP PHP
Tobias Otto
- php
0 Tom
Hallo ich bin bald am verzweifeln,
ich bekomme es einfach nicht hin mit ftp_put eine datei hochzuladen.
bekomme immer die fehlermeldung
Aktuelles Verzeichnis: /
Aktuelles Verzeichnis: /Inetpub/wwwroot
Warning: ftp_put(): Unable to access test.html in D:\inetpub\wwwroot\adr.php on line 35
FTP-Upload ist fehlgeschlagen!
wenn ich ftp_delete statt put mache funktioniert es komischer weise. die datei ist gelöscht. also dürften mir ja auch keine zugriffsrechte fehlen oder??
Folgender Quelltext:
// Verbindungsaufbau
$conn_id = ftp_connect($ftp_server);
// Login mit Username und Passwort
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Verbindung überprüfen
if ((!$conn_id) || (!$login_result)) {
echo "FTP Verbindung ist fehlgeschlagen!<br>";
echo "Verbindungasufbau zu $ftp_server mit Username $ftp_user_name versucht.<br>";
exit;
} else {
echo "Verbunden zu $ftp_server mit Username $ftp_user_name<br><br>";
ftp_pasv($conn_id, TRUE);
}
echo "Aktuelles Verzeichnis: " . ftp_pwd($conn_id) . "<br>";
if (ftp_chdir($conn_id, "Inetpub\wwwroot")) {
echo "Aktuelles Verzeichnis: " . ftp_pwd($conn_id) . "<br>";
} else {
echo "Verzeichnis-Wechsel ist fehlgeschlagen.\n";
}
// Datei hochladen
$upload = ftp_put($conn_id, "test2.html", "test.html", FTP_ASCII);
// Upload überprüfen
if (!$upload) {
echo "FTP-Upload ist fehlgeschlagen!";
} else {
echo "Datei $source_file auf Server $ftp_server als $destination_file hochgeladen";
}
// FTP Verbidung schließen
ftp_close($conn_id);
Hello,
bau mal die Überprüfung und ggf. Einstellung des local working directorys ein
http://de2.php.net/manual/de/function.ftp-raw.php
$_result = ftp_raw('lcd');
print_r($_result);
$_result = ftp_raw("lcd $lokales_verzeichnis");
print_r($_result);
Ich vermute, dass Du lokal noch im Wald stehst
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hello,
bau mal die Überprüfung und ggf. Einstellung des local working directorys ein
$_result = ftp_raw($conn_id,'lcd');
print_r($_result);
$_result = ftp_raw($conn_id,"lcd $lokales_verzeichnis");
print_r($_result);
da fehlte noch die Connection-ID, aber das hättest Du sicher selber gemerkt.
Es ist aber gar nicht so einfach, über die PHP-FTP-Funktionen alle Features des Servers zu nutzen.
Wenn ich auf meinem Testserver als angemeldeter ftp-User beim FTP-Server (anderes Gerät)
$_help = ftp_raw($ftp_svr, "help");
print_r($_help);
aufrufe, erhalte ich diese Antwort.
Array
(
[0] => 214-The following commands are recognized:
[1] => USER PASS QUIT CWD PWD PORT PASV TYPE
[2] => LIST REST CDUP RETR STOR SIZE DELE RMD
[3] => MKD RNFR RNTO ABOR SYST NOOP APPE NLST
[4] => MDTM XPWD XCUP XMKD XRMD NOP EPSV EPRT
[5] => AUTH ADAT PBSZ PROT FEAT MODE OPTS HELP
[6] => ALLO MLST MLSD SITE P@SW
[7] => 214 Have a nice day.
)
Das sind die Kommandos, die der FTP-Server (Filezilla) verstehen will
Leider liefert er keine Erklärungen dazu, so wie es der Client mit
ftp> help rhelp
rhelp get help from remote server
tut.
ftp> rhelp PASS
214 Command PASS is supported by FileZilla Server
ist leider alles, was er von sich gibt.
Besteht die Frage, sind die Nmemonics, die der Server versteht, genormt, oder kann das jeder Server so halten, wie er will?
Ich finde leider auch nirgendwo eine Hilfe zu den Commands
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Moin!
Besteht die Frage, sind die Nmemonics, die der Server versteht, genormt, oder kann das jeder Server so halten, wie er will?
Was wäre die Konsequenz für FTP-Clients, und wie wahrscheinlich ist, dass man diese Konsequenz akzeptiert hat?
- Sven Rautenberg
Hello,
Besteht die Frage, sind die Nmemonics, die der Server versteht, genormt, oder kann das jeder Server so halten, wie er will?
Was wäre die Konsequenz für FTP-Clients, und wie wahrscheinlich ist, dass man diese Konsequenz akzeptiert hat?
Das kommt darauf an...
Die vom FTP-Client in seiner Beutzershell akzeptierten Kommandos könnten vollkommen anders lauten, als diejenigen, die er zum Server sendet. Außerdem könnte es sein, dass zum Server keine Mnemonics gesendet werden, sondren Befehlsnummern. Es wäre damit vollkommen unerheblich, welches Mnemonic der Server welcher Befehlsnummer zuordnet.
Es ist also durchaus nicht zwingend erforderlich, dass die bei HELP oder REMOTEHELP oder RHELP aufgeslisteten Kommandos genormt sind. Übersetzt werden könnten sie vom Client, bevor er auf sein API zugreift.
So habe ich es jedenfalls kennengelernt.
Wenn FTP nun aber im Klartext bzw. über Mnemonische Befehle abgewickelt wird, dann sieht das natürlich anders aus.
Das hieße dann, dass in den Netzwerkpaketen irgendwo die Schlüsselwörter drinstehen müssten.
Aber die eigentliche Frage bleibt bestehen:
Kann mir jemand zu dem abgebildeten Befehlssatz ausführlichere (deutsche) Beschreibungen liefern?
ABOR
ADAT
ALLO
APPE
AUTH
CDUP
CWD
DELE
EPRT
EPSV
FEAT
HELP
LIST
MDTM
MKD
MLSD
MLST
MODE
NLST
NOOP
NOP
OPTS
P@SW
PASS
PASV
PBSZ
PORT
PROT
PWD
QUIT
REST
RETR
RMD
RNFR
RNTO
SITE
SIZE
STOR
SYST
TYPE
USER
XCUP
XMKD
XPWD
XRMD
Und dann bitte auch die Antwort-Codes (Status-Codes oder Fehlernummern?)
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hello,
RFC 114 über diverse Zwischenschritte bis RFC 959
Ist die 959 die bisher letzte zu diesem Thema?
Dann werde ich mir mal die Mühe machen, die Funktionen rauszusuchen und zu versuchen, sie auf deutsch zu überstzen.
Zumindest gibt es wohl noch große Diskrepanzen, welche Funktionen ein Server unterstützt.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom