ftp_login expects parameter 1 to be a resource

16,945

Solution 1

The problem has it basis in the fact that, when ftp_connect() cannot connect to a FTP Server it returns FALSE instead of the resource link identifier it generally returns. Check whether your FTP server is alive using ping

you can do like

if($conn_id){
     // login with username and password
     $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
}

Solution 2

ftp_connect will return false if it does not succeed. What this will cause is the error message you are experiencing instead of logging you in.

I would recommend using a condition to avoid trying to login when your connection fails.

A couple of options you have:

// set up a connection to ftp server
$conn_id = ftp_connect("thelegendmaker.net") or die("Unable to connect to server.");

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

or

// set up a connection to ftp server
$conn_id = ftp_connect("thelegendmaker.net");

// login with username and password
if($conn_id !== false) $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

Since I am getting a response from your server to a ping. My guess is that you haven't properly configured your FTP server.

Solution 3

According manual note;

Returns a FTP stream on success or FALSE on error.

So, you can apply a simple filter like that;

$conn_id = ftp_connect("thelegendmaker.net");
if (false === $conn_id) {
    throw new Exception("FTP connection error!");
}
...
Share:
16,945
michael b
Author by

michael b

Updated on June 26, 2022

Comments

  • michael b
    michael b almost 2 years

    I'm trying to upload some files with FTP and I'm having the following error:

    Warning: ftp_login() expects parameter 1 to be resource, boolean given in /home/content/98/10339998/html/upload.php on line 65 FTP connection has encountered an error!Attempted to connect to thelegendmaker.net....

    caused by:

    // set up a connection to ftp server
    $conn_id = ftp_connect("thelegendmaker.net");
    
    // login with username and password
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    

    Does anyone know why this is happening? I've tried using no quotes, double quotes, and single quotes and none work.