Jojo
Jojo

Reputation: 278

PHP times out when retrieving items

I'm trying to get a directory listing from a FTP server which only accepts FTP connections over explicit TLS.

<?php
$ftp_server = "...";
$ftp_user_name = "...";
$ftp_user_pass = "...";

// set up basic ssl connection
$conn_id = ftp_ssl_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
echo $login_result . "<br/>";

// change dir to "data"
$chdir_result = ftp_chdir($conn_id, "data");
echo $chdir_result . "<br/>";
echo ftp_pwd($conn_id) . "<br/>"; 

// get contents of the current directory
$contents = ftp_rawlist($conn_id, ".");

// output $contents
var_dump($contents);

// close the ssl connection
ftp_close($conn_id);
?>

The script hangs for about a minute and gives the following output:

 1
 1
 /data
 bool(false)

I also tried using ftp_nlist and print_r with no avail. (print_r just prints blank).

Upvotes: 1

Views: 1555

Answers (1)

stackErr
stackErr

Reputation: 4170

If you have a firewall or NAT enabled on your server then you have to use passive mode for your ftp connection

Add this before ftp_rawlist()

ftp_pasv( $conn_id, true );

Upvotes: 3

Related Questions