Drupal Plugin Manager – Could not login to the ftp server
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