Problem: Server welche sich hinter einem NAT befinden, sind mit der eigenen IP-Adresse nach außen nicht erreichbar. Entsprechend können über die Server-IP keine FTP-Operationen ausgeführt werden. Die Lösung liegt darin, über die öffentliche Serveradresse zu kommunizieren. Das heißt, dem PHP zu sagen, dass es nicht die Adresse nutzen soll welche der Server versucht zu vermitteln, sondern die mit der sich ursprünglich verbunden wurde. Das erreicht man über folgende FTP-Option:
ftp_set_option($this->connection, FTP_USEPASVADDRESS, false);
Danach setzt man noch den Passiven Modus
ftp_pasv($this->connection, true);
fertig!
Quellen:
https://serverfault.com/questions/797928/php-ftp-passive-ftp-server-behind-nat
http://www.elitehosts.com/blog/php-ftp-passive-ftp-server-behind-nat-nightmare/