Joomla Tutorials and Blog Posts

A Guided Tour of Joomla's configuration.php File

In our forum we are often asked to help with problems with paths, passwords, data base connections and other basic configuration issues. This is especially true after a migration or move of a site.

Most of the fixes for these problems can be made in your configuration.php file. We're going to help you get to know it this very important file.

In this lesson, were going to tell you:

  • Where you can locate your configuration.php file.
  • What each line affects and common settings.

This is not a comprehensive coding guide, but is a general reference to help you understand this file.

Location of the configuration.php file

tutuploadsLocation.png

Here's a picture of the location using Filezilla. This installation is in a sub directory called "joomla" .

Your configuration.php file is located in the root of your joomla installation. If it's in the main directory the path to it would look something like this:

  • /home/username/public_html/configuration.php

In a sub directory or sub domain:

  • /home/username/public_html/subdirectory/configuration.php

On your computer (using XAMPP as an example)

  • C:\Documents and Settings\Ed\My Documents\xampp\htdocs\J17\configuration.php

I shouldn't have to say this, but I will. Make a backup of your current file before you do anything to it. Use a test site or play with it in a text editor offline for practice. Don't make changes without a backup. Make a backup before you move a file to a different server or directory.

We'll go through the file line-by-line and create a quick reference for each line, with some notes where further explanation might be needed.

Site Settings

tutuploadsSite_Settings.png
  • $offline : When set to "0" the site is online. Set to "1" the site is offline
  • $offline_message : You can write any text message on this line.
  • $sitename : The name of the site as it appears in headings
  • $editor : The editor that is chosen as default in global configuration
  • $list_limit :The length of lists in the Control Panel for all Users. By default, this is set to 20.
  • $access : The default access level to the site. "1" is public access; "2" is registered; "3" is special

Debug Settings

tutuploadsDebug_Settings.png
  • $debug : "0" is off. "1" is on.
  • $debug_lang : "0" is off. "1" is on.

Notes:

$debug : This will turn on the debugging system of Joomla!. When set to Yes, this tool will provide diagnostic information, language translations, and SQL errors. If any such issues or errors occur, they will be displayed at the bottom of each page, in both the front-end and back-end.

$debug_lang : This will turn on the debugging indicators (*...*) or (?...?) for the Joomla! Language files. Debug Language will work without the Debug System tool set to on. But it will not provide additional detailed references which would help in correcting any errors.

Database Settings

tutuploadsData_Base_Settings.png
  • $dbtype : "mysqli" or "mysql"
  • $host : "localhost" on many servers, not all.
  • $user : The name of the data base user that has access to the data base.
  • $password : The password associated with the data base user. Not your admin password or FTP password.
  • $db : The data base name created when you created the data base.
  • $dbprefix : At least three characters ending in an underscore. (Set when you installed joomla)

Notes

You need this information when you install the site. Forgetting to change this is often the cause of problems when moving a site. Before moving any site, make a backup copy of configuration.php so you can refer to the original settings if you need them.

$dbtype : only change this if you have changed servers and using a different type.

$host : most servers this is localhost. Godaddy and a some others have different names. Check with your hosting company if you're not sure.

$user : On shared cPanel servers it is often prefixed with the user name - for example edandrea_ed. On your local machine there will not be a prefix unless you created one. It shouldn't be root in any case. If you create a site on your local server and don't specify password when you create a data base, you will be able to access the data without a password. This is not secure when you move to web server online.

$db : On shared cPanel servers this is usually prefixed with a username - for example edandrea_jml1. On your local machine there will not be a prefix unless you created one. On Godaddy servers this name is generated by their service and you will not be able to create your own, see their documentation if you need it.

$dbprefix : You cannot create a new one here. This must be the one that was used when the data base was created, or that is actually used by the database. If you have more than one data base prefix, you can change this, but you can't create a new one.

 

Assorted extra features

 

tutuploadsmedia_1323186823566.png

$live_site : The actual URL of the site for example - http://yourdomain.com (unless your site is in a subdirectory)
$secret: : DO NOT CHANGE
$gzip : "0" is off; "1" is on.
$error_reporting : "-1" is the appropriate level.
$helpurl : default is joomla help. Can be set to your own help pages.

 

Notes

$live_site : In the newest versions this should not have a value. There may be times you do need to fill in a value. If you are redirecting a url you need to put the actual url to the live site on this line. Or if you are creating a copy of a site for testing and modification. For example, I have a test site at http://dashhelp.com/joomla17 which is a copy of my main site. had to change this to line in the configuratiion.php file on the copy. You will get a page not found error if this is not set to 'http://yourdomain.com/directory" or in the case of a subdomain "http://subdomain.yourdomain.com" Joomla uses this url to create relative paths. Essential to check this on test sites.

$secret : This is generated when Joomla! is first installed and is not changeable. It is used internally by Joomla! for security purposes.

$error_reporting : This sets the appropriate level of reporting. The default setting is System Default. Errors can occur that don't have any effect on the site. You don't need to log all errors unless you're doing some detailed debugging work. Your logs will just eat up your disk space otherwise.

$helpurl : The place Joomla! looks for help information when you click the Help button (visible in many screens and options of the administration panel). By default, it uses Joomla!'s main help site, but you could create your own help site, or link people to your ticket system for help.

tutuploadsmedia_1323192679184.png

$ftp_host: : "127.0.0.1" is the default IP for localhost. Your server may be different.
$ftp_port : "21" is normal default. Check with your host if you are having problems. Not all servers are the same.
$ftp_user : your FTP user name
$ftp_pass : your FTP password
$ftp_root: : usually a path like /home/username/public_html (no trailing slash)
$ftp_enable : This setting tells Joomla! to use it's built-in FTP function instead of the process used by PHP.

Time Zone Settings

tutuploadsLocale__Time_Zone__Settings.png

$offset : default is UTC
$offset_user : default is UTC

Notes

$offset. This tool sets the current date and time. The set time should be where the site's server is located. The default setting is (UTC 00:00) Western Europe Time, London, Lisbon, Casablanca.

Here's an example of the offset if the server is in California - US Pacific time $offset = 'America/Los_Angeles';

Email Settings

tutuploadsEmail_Settings.png

$mailer : "mail" uses the PHP mail function; "sendmail" uses SMTP mail on the server.
$mailfrom : From E-mail. The email address used by Joomla! to send site email.
$sendmail : The path where the Sendmail program is located. This path is only used if Mailer is set to Sendmail.
$smtpauth : If the SMTP server requires authentication to send mail, set this to Yes. Otherwise leave it at No. This is only used if Mailer is set to Sendmail.
$smtpuser : The username to use for access to the SMTP host. This is only used if Mailer is set to Sendmail.
$smtppass: The password to use for access to the SMTP host. This is only used if Mailer is set to Sendmail.
$smtphost : SMTP Host. The SMTP address to use when sending mail. This is only used if Mailer is set to Sendmail.
$smtpsecure : Select the security model your SMTP server uses - Default is None. Options are SSL and TTL.
$smtpport : SMTP Port. Most unsecured servers use port 25 and most secure servers use port 465. Check with your host.

 

Log Settings

 

tutuploadsmedia_1323186985799.png

$log_path : '//home/username/public_html/j/logs';
$tmp_path : :'//home/username\public_html/tmp';

Notes

$log_path : The path where the logs should be stored. The Joomla! installer should automatically fill in this folder. It's not critical to the operation of the site, so if it's wrong you will only know it if you try to check the logs.

$tmp_path : This is an important setting and should be filled in properly. Many problems found when moving sites are caused because joomla is looking for the old tmp folder. If you get any errors regarding the tmp folder check this path and make sure it's correct..

Cache Settings

tutuploadsCache_Settings.png

$caching : "0" is off; "1" Conservative setting; "2" Progressive Setting
$cache_handler : "file" full cacheing ; "cachelite" lite cacheing

Notes

$caching : This setting sets the maximum length of time (in minutes) for a cache file to be stored before it is refreshed. The default setting is 15 minutes.

$cache_handler : This setting sets how the cache operates. There is only one caching mechanism which is file-based.
Cachelite is an alternative to full caching.

Metadata Settings

tutuploadsMeta_Data_Settings.png

$MetaDesc : Create a text description for SEO.
$MetaKeys : Insert keywords separated by a comma.
$MetaAuthor : "0" is no; "1" is yes.

Notes

$MetaDesc : This is the Site Meta Description. This is the description of the site which is indexed by search engine spiders.

$MetaKeys : These are Site Meta Keywords. These keywords describe the site and are the basis for improving the ability of search engine spiders ability to index the site.

$MetaAuthor : This shows Author Meta Tag. It shows the Author Meta information for articles and is used by search engine spiders when indexing the site.

SEO Settings (Search Engine Optimization)

tutuploadsSEO_Settings__Search_Engine_Optimization_.png

$sef : "0: is no; "1" is yes
$sef_rewrite : "0" is no; "1" is yes
$sef_suffix : "0" is no; "1" is yes
$unicodeslugs : "0" is no; "1" is yes
$feed_limit : default is 10 - any integer can be used

Notes

$sef : This controls Search Engine Friendly URLs. When set to Yes, URLs are rewritten to be more friendly for search engine spiders. For example, the URL: www.example.com/index.php?option=com_content&view=etc..., would turn into: www.example.com/alias. Most of the items created in Joomla! have an Alias box where a search engine friendly URL can be inserted. The default setting is No.

$sef_rewrite : When set to Yes, Joomla! will use the mod_rewrite settings of Apache when creating search engine friendly URLs. Please note: it is advised that you do not modify any .htaccess file without an understanding of how it works. You must use the .htaccess file provided with Joomla! in order to use this setting. To use this file, rename the htaccess.txt file (found in the root directory) to .htaccess. By default, this setting is set to No.

$sef_suffix : When set to Yes, Joomla! will add .html to the end of the URLs. The default setting is No.

$unicodeslugs : Choose between transliteration and unicode aliases. Transliteration is default. This is an advanced setting and you probably will not need to change this unless you are and SEO expert.

Session Settings

tutuploadsSession_Settings.png

$lifetime : a whole number indicating minutes.
$session_handler : "database" or "none"

Notes

$lifetime : This setting sets how long a session should last and how long a user can remain signed in for (before logging them off for being inactive). The default setting is 15 minutes.

$session_handler : This setting sets how the session should be handled once a user connects and logs into the site. The default setting is set to Database.

 

Comments

 
Rouven
#1 Rouven 2012-01-27 02:44

Nice overview. There are actually give a few more cache (and session) handlers available but they depend on other software installed on your server. The global configuration will tell you which are available on your server.
 
 
Laura at Affiliate
#2 Laura at Affiliate 2012-01-30 12:41

It is great to come across someone who knows how these things work. I am useless whtn it comes to Joomla, so you really helped me out!
 
 
Chas Burdick
#3 Chas Burdick 2012-01-30 14:34

Thank you for the line by line, that is very helpful, hope to see more tutorials like this.
 
 
Nick
#4 Nick 2012-02-01 05:42

Thanks for the info, Rouven! We'll have to have you do a guest post sometime :)

Kind regards,
Nick
 
 
Nick
#5 Nick 2012-02-01 05:44

Hi Laura,

In that case you should check out online class (www.ostraining.com/online/). It should help you to grasp the concepts and to give you the guidance needed to get a firm foundation on Joomla :)

Kind regards,
Nick
 
 
Nick
#6 Nick 2012-02-01 05:45

Hi Chas,

You're very welcome! We have more planned so stay tuned! :)

Kind regards,
Nick
 
 
Glorious Steve
#7 Glorious Steve 2012-02-02 04:50

Excellent Nick,

I am a beginner. Earlier I was trying out joomla. I begin to understand the basics. Thanks a lot!
 
 
Nick
#8 Nick 2012-02-02 05:04

You're welcome, Steve!

You should check our Joomla classes (www.ostraining.com/online/). We have a Joomla Beginner class and an Intermediate class, as well as a Joomla template design class.

Kind regards,
Nick
 
 
Bob
#9 Bob 2012-03-08 06:42

Thanks for this line by line explanation. I often have trouble when I'm moving a site from my local environment to the final active server. The confusion is always with the $secret and $password items.

If I read the explanation above correctly, the $secret data is part of the database and the info should be retained from the development server's config file and written to the active server's config file. Whereas the $password info from the development server's config file should be replaced with the active server's user password.

Thanks!
 
 
Stix
#10 Stix 2012-06-11 17:02

hi there, great tutorial. Please also cover the steps to hide all the passwords etc?. especially when u want to give the live site for support to troubleshoot certain issue u dont want them to know the sensitive details. thanks
 
 
sohrab
#11 sohrab 2012-07-20 09:13

Hi
this was very useful thank you
but i still have a problem with my site
i wanted to ask if i can use ip numbers instead if address? i dont know my address and my host is not giving me that, i just have this: 67.228.4.124:3306
can i change it address?
by the way i am using plesk 8 , anybody know how to work with it?
 
 
Jos
#12 Jos 2012-07-26 12:23

Hi,
This is a very nice guided tour!!

In my Joomla 2.5 configuration.p hp there are 3 more settings I do not find back, though:
public $cookie_path = '';
public $cookie_path = '';
public $language = 'en-GB';
Of the latter I wonder what it does, since I want to set up a bilingual site. I do not find that info anywhere, not even on the official Joomla site...
Thank you, Jos.
 
 
Anusha Isaacraj
#13 Anusha Isaacraj 2012-08-21 09:38

Thank you so much...
It helped me a lot !
 
 
Abdullah
#14 Abdullah 2013-03-30 14:39

Hi,
I missed up my configuration.p hp. I have several copies and not sure which one if the correct one. none seems to work I still receive errors
 
 
Harish
#15 Harish 2013-04-18 14:41

If default Text Filter values are changed in Global Configuration they are not getting saved. Can I directly edit configuration.p hp file to add a line for the same. I want to set "No Filtering" option for Super User.
 

Add comment


Security code
Refresh

blog-ad

Start Online Training

Members get access to all our video training. That's 1,142 training sessions in Joomla, Drupal, WordPress and Coding.

Latest Comments

The License for Our Tutorials

All of our tutorials are published under the Creative Commons Attribution-NonCommercial license. This means:

  • You can re-use these tutorials.
  • You can modify these tutorials.
  • You must link back to our original tutorial.
  • You can't use these tutorials commercially.

Click here to read the full license.

Open Source Training is not affiliated with or endorsed by the Joomla, WordPress or Drupal projects.
All product names and trademarks are the property of their respective owners.

Copyright 2013 Open Source Training, LLC. All rights reserved.