Ich habe Probleme mit dem FTP speziell mit dem Listing von Dateien und
Verzeichnissen. Mit folgendem Script logge ich mich auf diversen Rechnern ein, um das FTP-Verzeichnis auszulesen.
###############################################
Aufbau der FTP-Verbindung
$ftp_server="192.168.255.255";
$conn_id = ftp_connect($ftp_server);
// Login mit username und password
$user="benutz";
$passwd="******";
$login_result = ftp_login($conn_id, $user, $passwd);
// FTP Verbindung testen
if ((!$conn_id) || (!$login_result))
{
echo "Keine Verbindung";
} else {
echo "Verbindung ok";
// die Dateiliste als Array definieren
$list=Array();
$list = ftp_nlist($conn_id,"");
// wenn keine Dateien im verzeichnis vorhanden sind dann Leermeldung
if (sizeof($list) == 0)
{
echo "Das Verzeichnis ist leer";
}
// in einer FOR-Schleife das Verzeichnis nach Dateien durchsuchen
for($i = 0; $i != sizeof($list); $i++)
{
echo "$list[$i]";
}
}
ftp_close($conn_id);
###############################################
Das komische ist bei einigen Rechnern funktioniert es, bei einigen bekomme ich die ECHO-Ausgabe: "Das Verzeichnis ist leer"
Gehe ich dann von der Betriebssystemebene mit ftp auf die Rechner, welche mir eine Leermeldung bringen, muss ich feststellen das die Verzeichnisse in Wirklichkeit voll sind. Allerdings bekomme ich beim "ls" nachfolgende Warnung:
###############################################
200 PORT command successful.
150 Opening ASCII mode data connection for '/bin/ls'.
drwxr-xr-x 5 benutz users 280 May 14 11:52 verzeichnis
-rw-r--r-- 1 benutz users 4 Apr 2 04:00 datei
.
.
.
.
.
WARNING! 29 bare linefeeds received in ASCII mode
File may not have transferred correctly.
###############################################
Schalte ich beim FTP mit dem Befehl "bin" auf binary-Modus um, bleibt die
Warnung nach dem "ls" aus. Ich habe mal versucht dieses "bin" mit ftp_raw und ftp_exec zu übertragen aber auch dies bringt nicht den gewünschten Erfolg. Die Probleme habe ich vor allem wenn ich auf SUSE Linux Sever V81 und höher zugreife. Im tracemode kann man sehen das der Return nur mit einem \n Linefeed erfolgt, während ich z.B. bei Solaris oder Windows Systemen ein \n\r pro Zeile bekomme. Kann es sein das ftp_list hier durcheinander kommt. Sind Bugs bei der PHP 4.3.3 bekannt.
Kann jemand helfen
Verzeichnissen. Mit folgendem Script logge ich mich auf diversen Rechnern ein, um das FTP-Verzeichnis auszulesen.
###############################################
Aufbau der FTP-Verbindung
$ftp_server="192.168.255.255";
$conn_id = ftp_connect($ftp_server);
// Login mit username und password
$user="benutz";
$passwd="******";
$login_result = ftp_login($conn_id, $user, $passwd);
// FTP Verbindung testen
if ((!$conn_id) || (!$login_result))
{
echo "Keine Verbindung";
} else {
echo "Verbindung ok";
// die Dateiliste als Array definieren
$list=Array();
$list = ftp_nlist($conn_id,"");
// wenn keine Dateien im verzeichnis vorhanden sind dann Leermeldung
if (sizeof($list) == 0)
{
echo "Das Verzeichnis ist leer";
}
// in einer FOR-Schleife das Verzeichnis nach Dateien durchsuchen
for($i = 0; $i != sizeof($list); $i++)
{
echo "$list[$i]";
}
}
ftp_close($conn_id);
###############################################
Das komische ist bei einigen Rechnern funktioniert es, bei einigen bekomme ich die ECHO-Ausgabe: "Das Verzeichnis ist leer"
Gehe ich dann von der Betriebssystemebene mit ftp auf die Rechner, welche mir eine Leermeldung bringen, muss ich feststellen das die Verzeichnisse in Wirklichkeit voll sind. Allerdings bekomme ich beim "ls" nachfolgende Warnung:
###############################################
200 PORT command successful.
150 Opening ASCII mode data connection for '/bin/ls'.
drwxr-xr-x 5 benutz users 280 May 14 11:52 verzeichnis
-rw-r--r-- 1 benutz users 4 Apr 2 04:00 datei
.
.
.
.
.
WARNING! 29 bare linefeeds received in ASCII mode
File may not have transferred correctly.
###############################################
Schalte ich beim FTP mit dem Befehl "bin" auf binary-Modus um, bleibt die
Warnung nach dem "ls" aus. Ich habe mal versucht dieses "bin" mit ftp_raw und ftp_exec zu übertragen aber auch dies bringt nicht den gewünschten Erfolg. Die Probleme habe ich vor allem wenn ich auf SUSE Linux Sever V81 und höher zugreife. Im tracemode kann man sehen das der Return nur mit einem \n Linefeed erfolgt, während ich z.B. bei Solaris oder Windows Systemen ein \n\r pro Zeile bekomme. Kann es sein das ftp_list hier durcheinander kommt. Sind Bugs bei der PHP 4.3.3 bekannt.
Kann jemand helfen
Kommentar