Edit report at https://bugs.php.net/bug.php?id=47110&edit=1
ID: 47110 Comment by: abrender at elitehosts dot com Reported by: konix dot net at du dot t-com dot hr Summary: Can not use ftp functions behind firewall Status: Closed Type: Bug Package: FTP related Operating System: Cent OS (Latest patch) PHP Version: 5.2.8 Block user comment: N Private report: N New Comment: If you're seeing 'failed: Operation now in progress (115)' and you've already switched into passive FTP mode then either your firewall needs to be fixed OR the ftp server is returning a private RFC1918 IP address in response to the PASV command which PHP is then trying to connect to and timing out. I've detailed this issue at http://www.elitehosts.com/blog/php-ftp-passive-ftp-server-behind-nat- nightmare/ and posted an entry at bugs.php.net with a patch to fix the issue at https://bugs.php.net/bug.php?id=55651 - please vote for that feature fix if you want it included in future PHP releases. Previous Comments: ------------------------------------------------------------------------ [2009-01-15 17:41:20] konix dot net at du dot t-com dot hr Fix firewall and it will work. ------------------------------------------------------------------------ [2009-01-15 17:21:22] konix dot net at du dot t-com dot hr FYI for anyone else looking for answer: - when behind firewall, you will surly set your ftp connection in PASV mode. Be sure to configure your firewall in a right way as you will need port open in upper ranges (from 1024). Once this is done, all PHP FTP function in PSV mode work as they should. ------------------------------------------------------------------------ [2009-01-15 12:47:50] j...@php.net IIRC, it's just a buggy FTP server issue. ------------------------------------------------------------------------ [2009-01-15 08:39:14] konix dot net at du dot t-com dot hr Description: ------------ I'm trying to connect to FTP server from a script. Script is behind firewall. Only FTP port is allowed (application/script is to be used in PCIDSS enviroment). We tried same script on other servers and no problem accured at all. This could be a firewall / web application firewall (mod_security) issue but we're not sure. Reproduce code: --------------- $ftp_array = array( // Host, user, pass ); $port = 21; $network_timeout = 30; echo "Connecting...\n"; // Connect $ftp_connection = ftp_connect($ftp_array['host'], $port, network); if ($ftp_connection) { // Login if ($login = ftp_login($ftp_connection, $ftp_array['user'], $ftp_array['pass'])) { // Pasive mode ftp_pasv($ftp_connection, true); // Change dir ftp_chdir($ftp_connection, "in"); // Get dir listing $contents = ftp_nlist($ftp_connection, "."); // Echo list echo '<pre>'; print_r($contents); echo '</pre>'; } else { echo "Can't login to remote server."; } ftp_close($ftp_connection); } else { exit("Can't connect to remote server."); } Expected result: ---------------- Array ( [0] => . [1] => .. [2] => 11829_RATE_39.txt ) Actual result: -------------- Warning: ftp_nlist() [function.ftp-nlist]: php_connect_nonb() failed: Operation now in progress (115) in /var/www/html/public_html/ftp_test.php on line 30 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=47110&edit=1