2016-04-29 13 views
1

Ich versuche, eine Datei von einem FTP in einem Docker-Container mithilfe von PHP abrufen. Das Skript, das ich lokal arbeite, aber die Datei wird nicht von Docker abgerufen. Hier ist meine Dockerfilephp ftp_get() funktioniert nicht in Docker Container

FROM debian:jessie 
RUN apt-get update && apt-get install -y php5-cli php5-curl git cron ca-certificates 
ADD startup.sh/
CMD ["/startup.sh"] 

startup.sh nur das eigentliche Skript herunterlädt aus der Quellcodeverwaltung laufen, und setzt einen cron-Job auf. Der Aufruf der ftp ist dies:

$connection = ftp_connect('theftpsite.com'); 
$login = ftp_login($connection, 'myusername', 'mypassword'); 
ftp_get($connection, 'localfile.xml', 'remotefile.xml', FTP_BINARY); 
ftp_close($connection); 

Die erros wir erhalten, sind

ftp_fget(): Switching to Binary mode. 

von

gefolgt
FTP Pull failed 

Gibt es noch etwas brauche ich in meinem Container zu installieren, um dieses zu erhalten arbeiten?

+0

"nicht funktioniert" - was bedeutet? Was tut es? Irgendeine Fehlermeldung? Weißt du überhaupt, wenn das "ftp_get" fehlschlägt? Wie, wenn Sie keine Fehlerprüfung durchführen? –

+0

Danke, ich habe die Fehler hinzugefügt, die wir zu der Frage bekommen haben und wie wir das Problem am Ende gelöst haben. –

Antwort

1

Wir brauchten

ftp_pasv($connection, TRUE); 

vor dem ftp_get() hinzuzufügen. Dies ist die funktionierende Lösung:

$connection = ftp_connect('theftpsite.com'); 
$login = ftp_login($connection, 'myusername', 'mypassword'); 
ftp_pasv($connection, TRUE); 
ftp_get($connection, 'localfile.xml', 'remotefile.xml', FTP_BINARY); 
ftp_close($connection);