FTP-Zugriff mit PHP

GeileEier

Mitglied
hallo,
ich versuche eine datei die sich auf meinem rechner befindet auf meinen FTP server hochzuladen.
mein vorhaben versuche ich mit ftp_fput durchzuführen.

PHP:
<?php

$FTP_IP = "ftp.example.com";
$FTP_USER = "username";
$FTP_PASS = "passwort";

// Öffne eine Datei zum Lesen
$file = 'C:/test_file.txt';
$fp = fopen($file, 'r');

if (fopen($file, 'r')){
    echo "$file wurde erfolgreich geöffnet<br />";
} else {
    echo "$file konnte nicht geöffnet werden<br />";
}



// Verbindung aufbauen
$conn_id = ftp_connect($FTP_IP);

if (ftp_connect($FTP_IP)){
    echo "verbindung zu $FTP_IP war erfolgreich<br />";
} else {
    echo "verbindung zu $FTP_IP fehlgeschlagen<br />";
}



// Login mit Benutzername und Passwort
$login_result = ftp_login($conn_id, $FTP_USER, $FTP_PASS);

if (ftp_login($conn_id, $FTP_USER, $FTP_PASS)){
    echo "login zu $FTP_IP war erfolgreich<br />";
} else {
    echo "login zu $FTP_IP fehlgeschlagen<br />";
}




// Versuche $file hochzuladen
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
    echo "$file wurde erfolgreich hochgeladen<br />";
} else {
    echo "$file konnte nicht hochgeladen werden<br />";
}

// Verbindung und Verbindungshandler schließen
ftp_close($conn_id);
fclose($fp);

?>

als fehlermeldung bekomme ich folgendes:
C:/test_file.txt konnte nicht geöffnet werden
verbindung zu ftp.example.com war erfolgreich
login zu ftp.example.com fehlgeschlagen
C:/test_file.txt konnte nicht hochgeladen werden
ich komme einfach nicht drauf wo die fehler sein könnten. (ich steh auf dem schlauch)
könnt ihr mir helfen mein problem zu beheben?

danke :)
 
Zuletzt bearbeitet:
Hi

zu allererst:
PHP:
$file = 'C:/test_file.txt';
if( !file_exists($file) )
  die("Fehler: Datei {$file} nicht gefunden.");
$fp = fopen($file, 'r');

if ( $fp ){
    echo "$file wurde erfolgreich geöffnet<br />";
} else {
    echo "$file konnte nicht geöffnet werden<br />";
}

Warum du dich nicht einloggen kannst weiß ich nicht. Bist du dir sicher dass die Benutzerdaten korrekt sind?
 
Hi

zu allererst:
PHP:
$file = 'C:/test_file.txt';
if( !file_exists($file) )
  die("Fehler: Datei {$file} nicht gefunden.");
$fp = fopen($file, 'r');

if ( $fp ){
    echo "$file wurde erfolgreich geöffnet<br />";
} else {
    echo "$file konnte nicht geöffnet werden<br />";
}

Warum du dich nicht einloggen kannst weiß ich nicht. Bist du dir sicher dass die Benutzerdaten korrekt sind?

ich habe mal deinen code genommen und siehe da...
Fehler: Datei C:/test_file.txt nicht gefunden.
was ich absolut nicht verstehen kann... die datei ist vorhanden und auch mit einigen zeilen inhalt gefüllt.

aber wenn ich die test_file.txt im auf dem gleichen FTP server habe wie die .php datei, dann bekomme ich folgende meldungen:
test_file.txt wurde erfolgreich geöffnet
verbindung zu ftp.example.com war erfolgreich
login zu ftp.example.com fehlgeschlagen
test_file.txt konnte nicht hochgeladen werden
datei wurde dort also gefunden, aber ich will sie ja von meinem rechner aus auf den FTP hochladen.
aber der login schlägt einfach fehl... obwohl username und passwort stimmen.

-
-
-

Hast du mal das Beispiel von der php Dokumentation probiert?
mit diesem code
PHP:
<?php

$ftp_server = "ftp.example.com";
$ftp_user = "foo";
$ftp_pass = "bar";

// Verbindung aufbauen
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

// Anmeldung versuchen
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    echo "Angemeldet als $ftp_user@$ftp_server\n";
} else {
    echo "Anmeldung als $ftp_user nicht möglich\n";
}

// Verbindung schließen
ftp_close($conn_id);
?>
bekomme ich folgende meldung:
also ich konnte eine verbindung herstellen und wurde auch eingeloggt.
 
Zuletzt bearbeitet:
also ich konnte eine verbindung herstellen
Uns würde es freuen, wenn du zukünftig beim Verfassen deiner Beiträge verstärkt eine Verbindung zur Shift-Taste herstellst, denn deine (hier mal vom Begriff "FTP" abgesehen) durchgängig kleingeschriebenen Beiträge entsprechen nicht dem Punkt 15 unserer Netiquette, die du seinerzeit mit deiner Registrierung anerkannt hast.

Vielen Dank! :)

mfg Maik
 
Hallo!

PHP:
// Öffne eine Datei zum Lesen
$file = 'C:/test_file.txt';
$fp = fopen($file, 'r');

if (fopen($file, 'r')){
    echo "$file wurde erfolgreich geöffnet<br />";
} else {
    echo "$file konnte nicht geöffnet werden<br />";
}
Du öffnest 2 mal die gleiche Datei.
Aus welchem Grund?
Abgesehen davon: warum öffnest Du die Datei denn überhaupt?
Zumindest ist aus Deinem Script nicht ersichtlich dass Du mit dem Inhalt der Datei arbeiten willst.
Um die Datei nur hochzuladen, langt auch ftp_put() (und dazu muss die Datei dann auch nicht geöffnet werden).

PHP:
// Verbindung aufbauen
$conn_id = ftp_connect($FTP_IP);

if (ftp_connect($FTP_IP)){
    echo "verbindung zu $FTP_IP war erfolgreich<br />";
} else {
    echo "verbindung zu $FTP_IP fehlgeschlagen<br />";
}
Du baust 2 mal eine Verbindung auf.
Aus welchem Grund?

PHP:
// Login mit Benutzername und Passwort
$login_result = ftp_login($conn_id, $FTP_USER, $FTP_PASS);

if (ftp_login($conn_id, $FTP_USER, $FTP_PASS)){
    echo "login zu $FTP_IP war erfolgreich<br />";
} else {
    echo "login zu $FTP_IP fehlgeschlagen<br />";
}
Du loggst Dich 2 mal ein.
Aus welchem Grund?
Und lässt es der FTP-Server überhaupt zu dass Du Dich mehrfach einloggst?

PHP:
// Versuche $file hochzuladen
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
    echo "$file wurde erfolgreich hochgeladen<br />";
} else {
    echo "$file konnte nicht hochgeladen werden<br />";
}
Eigentlich sollte man hier ja schon fast erwarten dass Du versuchst die Datei 2 mal hochzuladen..... :D
Da der 2. Parameter die Zieldatei beschreibt und die Variable $file den Wert "C:/test_file.txt" enthält, ist es erforderlich dass der Server unter Windows läuft und dass das Script Zugriffsrechte auf das Wurzelverzeichnis von Laufwerk C:\ hat.
Hat das Script keine Zugriffsrechte auf das Wurzelverzeichnis von Laufwerk C:\, kann die Datei auch nicht angelegt werden.
Läuft der Server nicht unter Windows, gibt es auch kein Laufwerk C:\.

Gruss Dr Dau
 

Neue Beiträge

Zurück