I've just spent a lot of time looking for information and guessing about the correct configuration of Joomla, to use its FTP mode. Many web users don't know how to set correct permissions with an FTP client so a CMS like Joomla is not a good solution to them. The FTP mode, which was introduced in Joomla not that long ago, should solve that problem, so I'm working on a script for an automatic Joomla installation.
However, there's a huge lack of information in the documentation, how to set the correct FTP options. More specifically the $ftp_root variable got me scratching my head.
Even if you enable the FTP mode during the installation step, the given credentials and path won't be shown in the final output of the configuration.php (bug?) but that's nothing to worry about as this can be set in the Global Configuration once logged into the Administration panel (under Server).
In the Administration the following explanation is given for the FTP Root:
The problem? The description for this field is SO bad, I could as well write "eat/my/shoe" into it. Everytime 'FTP server' is written, instead of the more correct 'FTP user'.
After trying all kinds of paths (absolute, relative, without joomla, with joomla directory, etc) I finally figured it out.
Let's put a scenario together:
You're on a shared web hosting server and you have a FTP user called "myftpuser".
The absolute path to your installed Joomla is "/var/www/myftpuser/html/joomla" where you have created the joomla folder especially for the installation.
When you log in to your FTP account, your home directory is /var/www/myftpuser - meaning that you see the 'html' folder in your list on the server side.
This is where you need to start from: Your FTP accoun'ts home directory.
Starting from there the path to Joomla looks like this: /html/joomla -> and this is the FTP Root value to use!
The description could therefore better be described as:
"The relative path from your FTP user's home directory to your Joomla directory."
To save the FTP settings entered in the Joomla Administration Global Configuration, the configuration.php needs to temporarily have all write permissions (666) so that you can save the settings by browser.
Or, even simpler, change the configuration.php with your FTP user by setting/filling out the following values:
public $ftp_host = '127.0.0.1';
public $ftp_port = '21';
public $ftp_user = 'myftpuser';
public $ftp_pass = 'testpass';
public $ftp_root = '/html/joomla';
You need to adapt them to your own FTP user, password and root path of course.
From now on uploaded files, installed extensions, etc. will be created with the same permissions as your FTP user which means there won't be problems with deleting them anymore.