Home > Content Management Systems, Drupal, General > Drupal Plugin Manager – Could not login to the ftp server

Drupal Plugin Manager – Could not login to the ftp server

March 1st, 2010

Hi guys,

Since yesterday I discovered this awesome module! First off, kudos to the creator(s), we’ll be using this on all our companies’ websites and will save us a truckload of time!

Second, I must say I’m not so convinced about the provided documentation as it took me about half a day to get this working.

It seemed that all my FTP credentials were correct under “Plugin Manager – Settings”:


Host: notorious.halecomm.net
User: ftp_user
Pass: xxxxxxx

I tried these with cuteFTP and got it working.

After this issue, it seemed that Plugin Manager could not retrieve the installation path for drupal, so I had to put in the full linux path to my drupal installation:

Path: /home/ftp_user/www/drupal6 (with beginning / and no trailing / as “sites/default/” or “sites/all” is being added…

With these settings I managed to download all the necessairy files, but was unable to extract and copy them through the FTP system to my “/sites/all/modules/” directory.

After some Googling I found out the following on the PHP.net website, about the usage of “ftp_connect”:

http://be.php.net/manual/en/function.ftp-connect.php

thomas g.
03-Mar-2003 11:35
always keep an eye on the ftp_pasv function, if you are behind a firewall or nat’ed and your scripts won’t do a listing or put files to the ftp

As our company webserver is behind our firewall, I suspected the problem was indeed in the lacking of PASV mode so I added the following line of code to “plugin_manager/ftp.backend.inc” on line 133:

ftp_pasv ($connect, true);

So the whole code block from line 115 to line 138 looks something like:

  // Try to guess which how far in we are chrooted...
  if (empty($ftp_path)) {
    foreach ($local_path AS $index => $value) {
      unset($local_path[$index]);
      if (@ftp_nlist($connect, implode('/', $local_path) .'/'. $dir)) {
        $ftp_path = implode('/', $local_path) .'/'. $dir;
        drupal_set_message(t('A drupal install was automatically located on ftp at @ftp_path.', array('@ftp_path' => $ftp_path)));
        break;
      }
    }
  }
  else {
    $ftp_path = $ftp_path .'/'. $dir;
    if (!@ftp_chdir($connect, $ftp_path)) {
      drupal_set_message(t('Your provided drupal install directory is invalid.') . l(t('Change it here.'), 'admin/plugin_manager/settings'),  'error');
      return FALSE;
    }
  }
 
  ftp_pasv ($connect, true);
 
  // If we couldn't guess it, then quit.
  if (!isset($ftp_path) || !@ftp_chdir($connect, $ftp_path)) {
    drupal_set_message(l(t('Could not guess the ftp directory for drupal.  Set it here.'), 'admin/plugin_manager/settings'), 'error');
    return FALSE;
  }

I hope to be of any assistance,
Kind regards,
Kim

Author: Kim Categories: Content Management Systems, Drupal, General Tags:
  1. No comments yet.
  1. No trackbacks yet.