PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Ftp-get aus dem Z/VM



damogran
27-02-2006, 12:10
Hi,

ich hab hier ein sehr spezielles Problem.

Ich brauche eine Datein von einem z/VM OS (Virtualisierungs Betriebsystem aus dem Mainframe Berreich) in ein Linux System per FTP. FTP Verbindung steht, nur bekomme ich die Dateine nicht mit eine ftp_put rüber. Ich vermute es hat was mit der etwas anderen Dateibennenung zu tun. Ich versuch das mal zu erklären. =)

Erstmal der Ablauf mit einem "normalen" FTP client.

230 LINUXCL logged in; working directory = LINUXCL 191
Remote system type is z/VM.
ftp> ls
500 Unknown command, 'EPSV'
227 Data transfer will passively listen to 172,16,145,65,4,48
125 List started OK
PROFILE EXEC V 42 12 1 2006-02-20 11:19:06 WORK
TEST EXEC V 38 5 1 2006-02-06 14:36:40 WORK
250 List completed successfully.
ftp>


Verbindung steht, ich brauch das File TEST EXEC


ftp> get "TEST EXEC"
local: TEST EXEC remote: TEST EXEC
227 Data transfer will passively listen to 172,16,145,65,4,49
125 Sending file 'TEST.EXEC'
100% |*************************************| 88 99.23 KB/s 00:00 ETA
250 Transfer completed successfully.
88 bytes received in 00:00 (48.85 KB/s)


Funktioniert also.

Im PHP Skript sieht das ganze so aus.


$conn_id = ftp_connect($ftp_server);

// Einloggen mit Benutzername und Kennwort
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");

// Download der Datei
$download = ftp_get($conn_id, "$locale", "TEST EXEC", FTP_ASCII);

// Schlien des FTP-Streams
ftp_quit($conn_id);

Kommt aber leider folgendes raus.

Warning: ftp_get(): Error opening in phpfile on line 174

Wenn ich "TEST EXEC" mit "TEST.EXEC" tausche passiert leider das Gleiche.

Hat jemand Erfahrung in dem Bereich? Egtl. muss es doch gehen ?!

Grüße
Damo

Gaert
27-02-2006, 13:08
Hi Damo,

ist $login_result true oder false?

Gruß,

Gaert

undefined
27-02-2006, 13:36
Pfadangabe Problem bei Remote!verwende chdir
int ftp_get ( int ftp_stream, string local_file, string remote_file, int mode ) http://www.php.net/manual/de/function.ftp-chdir.php

undefined
27-02-2006, 13:40
hier mal ein Beispiel.

protected function ftp_getconnect()
{
$this->FTPCON = ftp_connect( $this->SERVER, (int)$this->PORT );
$this->FTPHANDLE = ftp_login( $this->FTPCON, $this->USER, $this->PASS );
if ( ( ! $this->FTPCON ) || ( ! $this->FTPHANDLE ) ) {
return false;
} else {
if ( ftp_chdir( $this->FTPCON, $this->PATH ) )
return true;
else
return false;
}
}

damogran
28-02-2006, 05:52
Danke erstmal für die vielen Antworten =)


Hi Damo,

ist $login_result true oder false?

Gruß,

Gaert

Im richtigen Skript hab ich noch eine Prüfung drin, $login_result muss im TRUE sein, und das ist es auch.


Pfadangabe Problem bei Remote!verwende chdir

int ftp_get ( int ftp_stream, string local_file, string remote_file, int mode )
http://www.php.net/manual/de/function.ftp-chdir.php
Das verteh ich nicht ganz, chdir wechselt doch das verzeichniss, ich versteh nicht ganz wie mir das hier weiterhilft.
Aber interessant ist vllt. zu wissen das ein chdir wunderbar funktioinert =)

undefined
28-02-2006, 07:38
Warning: ftp_get(): Error opening in phpfile on line 174
Das heist doch wohl das PHP die Datei nicht finden kann.
Deshalb ist es am besten wenn man erst in das Verzeichnis Wechselt wo sich diese Datei befindet, ansonsten musst du mit absoluten Pfaden Arbeiten was bei FTP nicht gerade vorteil haft ist. Oder was soll
TEST EXEC sein - ein Datei oder ein Befehl - wohl kaum - dafür gibt es ftp_exec()

damogran
28-02-2006, 11:23
Bei z/vm werden Dateinen nicht wie üblich bennant. D.h. Dateien bestehen aus 2 (egtl. 3 aber das spielt in diesem Fall eine Rolle) Qualifiern.

x y

So werden die Daten benannt und die Datei die ich holen will heißt eben

TEST EXEC

Diese Datei liegt im Homedirecotry und kann auch mit eine mlist angezeigt werden.
Um zu zeigen das man die Daten trozdem ganz normal holen kann hab ich das Beispiel mit dem "normalen" FTP Client gezeigt. Da mach ich ja auch nur ein "get "TEST EXEC"" und es funktioniert.

Also das File liegt definitv da, ich muss nicht erst das Verzeichniss wechseln

undefined
28-02-2006, 13:37
Also geht es bei deinem Problem rein um die Leerzeichen Behandlung auf Konsolen Sprachen Basis. Ich weiss nicht ob hier urlencode() etwas bewirken wird weil ich bisher noch nie so etwas machen muste. Am besten also mal die RFC Standards für die Behandlung von Leerzeichen im FTP Protokoll durch forsten.