How to override file_public_path in install profile? I want to create an install profile that creates the files folder in the document root, www.example.com/files, and not the sites/default folder.

I have tried two methods of doing this and both partially works, they create the folder in the correct place, but when the site is finished installing the admin/config/media/file-system is showing "sites/default/files".

Method 1 used:

Added "$conf['file_public_path'] = "files";" to settings.php

Note: This line was actually removed from settings.php after installation finished

Method 2:

added the below code to [myprofile].profile:

function sitebase_install_tasks_alter(&amp;$tasks, &amp;$install_state) {
  $GLOBALS['conf']['file_public_path'] = 'files';
}


In both cases the Verify requirements step was testing for "files".

How come Drupal all of a sudden seems to lose this setting and instead inserting the wrong value in the db? Do I need to also manually insert this in the db in [myprofile].install?
You probably want to look at this very recent blog post from PreviousNext: Collecting and writing configuration settings to setting.php from an install profile for answers to this question and your other about creating your own step in an install profile.

From that blog post regarding their install profiles form submit handler:


  Then we had to do the actual storing of these variables. Now at this
  stage the database connection is not setup so you cannot call
  variable_set(), you have to use another of Drupal's lesser known api
  functions - drupal_rewrite_settings(). This is the function Drupal
  uses to write the $databases variable to your settings.php. But with
  some minor wrangling you can use it to also write $conf variables to
  settings.php, which are from that point forward available for use via
  variable_get(). And therefore available for us to use to define our
  connection settings for the solr server. Because
  drupal_rewrite_settings should only be called once (to avoid having
  your settings overridden) we had to duplicate what the standard
  install does - ie writing the database settings - then we could write
  our own $conf settings.