Installation Instructions
Important: Do NOT perform these installation steps if you need to update your copy of ExpressionEngine from an earlier version. Instead, use the Update Instructions.
ExpressionEngine is installed in six steps.
1. Get Your Settings
In order to install ExpressionEngine you will need to know 4 pieces of information. If you do not know what they are, please contact your hosting provider and ask them.
- MySQL Database Name
- MySQL Server Address (often "localhost" or the server IP address)
- MySQL Username
- MySQL Password
Note: You will need to either create your database or have an existing database before running the ExpressionEngine installation. This can usually be done either using something such as phpMyAdmin or through your web hosting account control panel.
2. Rename the "system" folder
This is an optional, but recommended step that increases security by keeping the directory containing your ExpressionEngine backend files hidden from public access.
To perform this step: Rename the directory called system. Choose a name that is not easily guessed.
3. Upload the Files
Using an FTP program such as WS_FTP, SmartFTP, Transmit, Fetch, etc. upload the ExpressionEngine files to a web accessible directory on your server.
Image files should be uploaded in BINARY format. The texb.ttf (TrueType Font) file in the system/fonts/ folder should be uploaded in BINARY format. All other files should be uploaded in ASCII format (also known as "text" format).
Note: Do not upload the following file and directory; they are only used for people performing an update from a previous version:
- system/update.php
- system/updates/
4. Set File Permissions
EngineHosting clients: Due to the secure Apache process used on EngineHosting's servers, you do not need to change the default permissions and can skip this step.
Windows Servers: The files and directories that need to be set to 666 or 777 on Unix servers need to be set as writeable on Windows servers. You may need to contact your Host or server admin for this.
If you are using a Unix server (or Unix variant, like Linux, OS X, FreeBSD, etc.) you must set the following files to 666:
- path.php
- system/config.php
- system/config_bak.php
You must set the following directories to 777:
- images/avatars/uploads/
- images/captchas/
- images/member_photos/
- images/pm_attachments/
- images/signature_attachments/
- images/uploads/
- system/cache/
5. Choose the Look of Your Site
ExpressionEngine, by default, installs with a default theme. You can optionally choose a different theme as follows if you wish:
- Visit the ExpressionEngine.com Template Library.
- Choose the Themes you want.
- Use the Download link to download a ZIP file containing the theme.
- Unzip the theme on your local computer.
- Upload the unzipped theme folder to your server and place it inside the themes/site_themes/ folder.
For instance, if you decided to download the Logical Blocks theme then you would end up with a themes/site_themes/logical_blocks/ directory on your server.
Due to the inherent flexibility in how ExpressionEngine and its Templates work, ExpressionEngine does not offer "one-click theme switching" for your site after installation.
6. Run the Installation Wizard
Point your browser to the ExpressionEngine Installation Wizard, located in your main ExpressionEngine root:
install.php
This file will perform changes that are required in order to update you to the new version of ExpressionEngine.
Important: Make sure you are accessing the file as you would a regular webpage, using an address similar to http://www.example.com/install.php. DO NOT access the file locally on your desktop computer.
When you are finished delete the install.php file from your server. Leaving it on the server is a security risk.
Troubleshooting and Running PHP as CGI
Please see the Troubleshooting Page for tips as well as special information if your server runs PHP as a CGI process.
User Contributed Notes
If you are using a custom prefix with your db tables, you should not name it exp_something. Stick with a few letters, replacing “exp” just to make sure it is unique.
giovanni, the Installer will do all of that for you. I don’t recall ever having to manually edit the config.php file for database connectivity.
what happened to the editing of the CONFIG.PHP file: db name. user password. etc? is this step no-longer needed?
In some cases the MySQL data created by ExpressionEngine are not saved correctly.
To solve this problem, the following line should be added:
mysql_query("SET NAMES ‘utf8’");
in .../db/db.mysql.php between
$this->server_info = @mysql_get_server_info();
return TRUE;
to get:
$this->server_info = @mysql_get_server_info();
mysql_query("SET NAMES ‘utf8’");
return TRUE;
P.S. That code should be restored after each update/upgrade.
P.P.S. According to the ExpressionEngine developers, a few other commands can be added as well, like SET CHARACTER SET utf-8 and SET COLLATION_CONNECTION=utf8_general_ci.
A comment on EE lover’s note:
The important thing is that the config files are writable by scripts during install, updates, and when modifying some of your site preferences. It’s noteworthy too that while protecting your files from unauthorized write access can prevent file manipulation, if a host’s security between shared accounts allows directory traversal in the first place, setting permissions to read-only does little to protect you. If an unauthorized individual gains read access to your files, then discovery of your database login information is possible, which could lead to just as serious of a compromise as writing information to your files.
Because of this, many quality hosts (such as EngineHosting) run separate Apache processes for each user, so that reading and writing of your files is not possible at all from scripts on other accounts. In these situations, you can leave permissions at 6xx for files and 7xx for directories and ExpressionEngine can still write to the files, because the script is running as you, the owner of the file.
So what this means is that on such hosts, it isn’t necessary to have world-writable permissions. Any file permission that allows your scripts to write to your own files is sufficient. ExpressionEngine doesn’t check for world-writability, just that it can write to the files that it needs, regardless of how that is accomplished on your server.
And also 755 instead of 777 for directories.
I would suggest setting the following files chmod to 600 instead of 666, because of some security issues on some shared hostings.
Other users on your server may be able to modify your files with 666 permission. Although this should not happen with a standard hosting service, but as you know most hosting companies including famous ones are not qualified enough.
* path.php
* system/config.php
* system/config_bak.php
You must have an ExpressionEngine license and have attained a forum rank of "Lab Assistant" (100 posts) to contribute notes to the User Guide