J2.5:Migrating from Joomla 1.5 to Joomla 2.5
This guide will take you step-by-step through the general procedure of how to migrate from Joomla 1.5 to later versions such as Joomla 2.5. Please read through all the material as this is not a light undertaking.
Joomla 2.5 is the stable release that is based on the development version that was called "1.6". Don't let the numerical closeness of 1.5 and 1.6, mislead you. Joomla 1.6 took three years to develop and has been a major undertaking. Countless hours have been spent by many volunteers from around the world to put it all together. Although much of the code is the same from Joomla 1.5, much of it has been written from the ground up, and the changes between 1.5 and 2.5 are comparable in size and complexity to the changes from Joomla 1.0 to 1.5. Because the changes from Joomla 1.5 to 2.5 are so large and because of the massive effort put into getting Joomla 2.5 to where it is today, there is no core upgrade path. This is indeed a migration. In planned future releases of Joomla, such as Joomla 3.0, 3.5 and so on, the changes from version to version will be more incremental and a core upgrade path is planned.
Now that Joomla 2.5 is finally here and stable, a community initiative led by the developers of Joomla is turning towards jUpgrade (a 3rd party Joomla extension on the JED originally developed by Matias Aguirre) for help and to help. Many of Joomla's developers (who are all volunteers that freely contribute their time) are volunteering to put the finishing touches on jUpgrade.
jUpgrade allows you to migrate from Joomla 1.5 to 2.5.
Other migration solutions including commercial solutions are listed on the Joomla Extensions Directory and should be considered as well. Other tools are not included in this tutorial but should be given consideration before you use jUpgrade if your time is highly valuable and limited.
Let's get started!
Review the Requirements
Please, please save yourself (and possibly your clients) a lot of headaches and make sure that your server (and in the case of jUpgrade, your browser too) is up for the task. Please review the technical requirements for Joomla! 2.5. Please review the requirements for jUpgrade as well.
Before You Get Started
Before you get started, there are a few things that you are going to have to check and/or think about:
- Is your Joomla 1.5 version up to date? The most up-to-date version of Joomla 1.5 is 1.5.26. If your version is not up-to-date, upgrade to 1.5.26 before migrating, especially if you are running Joomla 1.5.19 or lower, as JUpgrade does not support older versions. Read how to download older releases of Joomla!. You will need the Joomla! 1.5.0 to Joomla! 1.5.26 package with file name: Joomla_1.5.0_to_1.5.26-Stable-Patch_Package.zip < direct download link. Read how to update from Joomla! 1.5.x to the latest version how to update from Joomla! 1.5.x to the latest version.
- Do all your extensions have Joomla 2.5 native versions? You can use Advanced Search on the Joomla! Extensions Directory to see what extensions support 2.5. Please note that jUpgrade is not currently able to upgrade all Joomla 3rd party extensions, so those will have to be done via their respective upgrade procedures. Supported by jUpgrade on January 2012 are AdminPraise, Kunena, K2, JoomComment, Virtuemart, redSHOP, CommunityBuilder, JCE, Contact Enhanced, JomSocial, redForm, JEvents, Akeeba Backup, Jumi and redMEMBER.
- Have you modified any core files? Any changes that you have made to core files in Joomla will be lost so please be forewarned.
- Is there a Joomla 2.5 compatible template available from your template provider? If not, do you feel comfortable making the changes yourself? There are a couple good resources:
- Chad Windnagle's Joomla Community blog
- Chris Davenport's "Template Changes for Joomla 1.6" presentation
- Joomla's Docs Template Tutorial Please note that although jUpgrade is not able to currently upgrade templates, the developers are working hard at implementing the feature.
- Is your language pack available in Joomla 2.5? Find your Joomla 2.5 Translation.
- Do you have folder or file permissions issues in your Joomla 1.5 installation?
- For a massive list of changes from Joomla 1.5 to Joomla 1.6, please see What's new in Joomla 1.6.
Backup, Backup, Backup
Skipping this part is perhaps the biggest mistake you can make. If you have a proper backup (or several) you can always revert if needed. However, if you don't properly backup your site and something goes wrong, you are going to waste a lot of valuable time and sometimes money, getting things back to the way they were. So please backup!
Using XCloner to Backup
- With XCloner you can backup your site fully, both files and database
- XCloner will produce TAR archives which can be opened with most archive clients
- After creating the backup, they can easily be restored by using its dedicated restore script
Using Akeeba to Backup
- Akeeba Backup produces a .jpa file
- The .jpa file contains all the folders and files and the MySQL database of your site.
- The .jpa file also contains an installer
- Kickstart.php (also from Akeeba) unpacks the .jpa file and then runs the installer
Akeeba and Kickstart can be downloaded from Joomla extension directory. There is a link to full instructions as well.
Upgrading with jUpgrade
Download the latest version of jUpgrade. It is highly advisible, especially when development still is progressing, to always use the latest available version!
Optional Testing Environment
If you are really nervous by this point and your heart is beating fast, then you should probably set up a testing environment.
XAMPP is an easy-to-install package that bundles the Apache web server, PHP, XDEBUG, and the MySql database. This allows you to create the environment you need to run Joomla! on your local machine. The latest version of XAMPP is available at the XAMPP web site. Downloads are available for Linux, Windows, Mac OS X and Solaris. Download the package for your platform.
Important Note Regarding XAMPP and Skype: Apache and Skype both use port 80 as an alternative for incoming connections. If you use Skype, go into the Tools-Options-Advanced-Connection panel and deselect the "Use 80 and 443 as alternatives for incoming connections" option. If Apache starts as a service, it will take 80 before Skype starts and you will not see a problem. But, to be safe, disable the option in Skype.
As of August 5, 2010, XDebug has been updated (to version 2.1) which fixes some important bugs (for example, watching local variables for nesting functions). The latest XAMPP package (1.7.3) now includes this new version of XDebug. If you just want to update XDebug, you can download the latest module from . There is a handy website that tells you which XDebug binary you need, depending on your phpinfo() information here. To use it, you just copy the output of your phpinfo() display and paste it into the form on the site.
Installation on Windows
Installation for Windows is very simple. You can use the XAMPP installer executable (for example, "xampp-win32-1.7.3-installer.exe"). Detailed installation instructions for Windows are available here.
For Windows, it is recommended to install XAMPP in "c:\xampp" (not in "c:\program files"). If you do this, your Joomla! (and any other local web site folders) will go into the folder "c:\xampp\htdocs". (By convention, all web content goes under the "htdocs" folder.)
If you have multiple http servers (like IIS) you can change the xampp listening port. In <xamppDir>\apache\conf\httpd.conf, modify the line Listen 80 to Listen [portnumber] (ex: "Listen 8080").
Installation on Linux
This guides you through the installation of Xampp on Debian GNU Linux or one of its derivatives such as Ubuntu, Knoppix or GRML. Note that this guide applies to Joomla! . It has been successfully tested on Debian 4.0 [Etch], Debian 5.0 [Lenny], Ubuntu 8.04 LTS [Hardy Heron], Ubuntu 10.10 [maverick] and Ubuntu 11.10 (Oneiric Ocelot). It will work for all Debian based Linux distribution as well.
Download XAMPP for Linux to your your Home folder.
Open Terminal and enter:
sudo tar xvfz xampp-linux-1.7.7.tar.gz -C /opt
(replace xampp-linux-1.7.7.tar.gz with the version of XAMPP you downloaded).
This installs ... Apache2, mysql and php5 as well as an ftp server.
sudo /opt/lampp/lampp start
sudo /opt/lampp/lampp stop
starts/stops all the services
Configure Xampp Error Reporting on Linux
By default error reporting in Xampp is set Development level. This causes several error messages on the screen that need not concern the average user. To prevent that from happening:
In your Terminal type
sudo gedit /opt/lampp/etc/php.ini
In the php.ini file, locate
And change the value to
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
And change the value to
Stop then restart XAMPP for the new settings to take effect
Open up the Terminal and type
sudo gedit /usr/share/applications/xampp-control-panel.desktop
Then copy the following into the gedit and save.
Name=XAMPP Control Panel
Comment=Start and Stop XAMPP
Exec=gksudo "python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py"
N.B. Ubuntu 11.10 needs python-glade2 installed in order to run the GUI. python-glade2 can be found in the Ubuntu Software Center.
Avoiding File Ownership Issues on Linux
Connect to localhost with an FTP client Default
Use your ftp client to create folders in your localhost and to copy files to/from your localhost.
- The XAMPP installation sets the correct Ownership of the files and permissions.
- Using the CHOWN command will cause Ownership problems with xampp.
- Using nautilus to manipulate folders/files on localhost will cause Ownership problems with xampp.
Test Your XAMPP localhost Server
Open your Browser and point it to
The index.php will redirect to
There you will find instructions on how to change default usernames/passwords. On a PC that does not serve files to the Internet or LAN then changing the defaults is personal choice.
Another way that will have the same result is to install EasyPHP, is an easy to install package, Nothing to configure. It's already done! You just need to download, intall ... it installs a complete WAMP environment for PHP developers on Windows, including PHP, Apache, MySQL, phpMyAdmin, xdebug ... The complete and ready-to-use environment for PHP developer. For download EasyPHP
Go to your Joomla backend. e.g. www.yoursite.com/administrator
Extensions >> Install/Uninstall
Browse >> Select com_jupgrade >> Upload File & Install
Enable Mootools Upgrade Plugin
- Go to Extensions | Plugin Manager
- Search for "System - Mootools Upgrade"
- Enable the plugin
It is important that this plugin is installed and that it has been set to enabled, as the proper functioning of jUpgrade depends on it.
Configure the Options
As of jUpgrade version 2.5, support is present to migrate to Joomla! 1.7 and Joomla! 2.5. Configure the options by navigating to Administrator > Components > jUpgrade > Parameters.
- Distribution - Select whether to migrate to Joomla! 1.6 or 2.5
- Prefix for old database - Your current table prefix
- Prefix for new database - Your selected table prefix for your migrated site
- Skip checks - Skip pre-migration checks
- Skip download - Skip downloading the package (Note: Must have a package already downloaded to your temp folder or set this and Skip Decompress if set to yes)
- Skip decompress - Skip decompressing the downloaded package (Note: Must have a package already downloaded and decompressed to site_root/jupgrade if set to Yes)
- Keep original positions - Keep the currently defined positions for modules
- Enable Debug - Enable this to have messages displayed below the migration process concerning the progress, helpful if having issues
When finished, Save the options.
Components >> jUpgrade
Do not exit the screen until everything has finished loading. Scroll down to check if finished.
Note that jUpgrade currently does not migrate custom and add-on templates. Only the default templates are initially installed. You must manually migrate the other templates.
Behind the Scenes
Even if the migration process was not 100% successful, your Joomla 1.5 is still intact and none of your users are affected. You have an opportunity to check out your site both in the frontend and the backend to make sure everything is working.
So what actually happens? jUpgrade downloads the version of Joomla that you selected to the jupgrade directory (which it creates) in the root folder of your Joomla 1.5 installation. It then extracts all the files from the download. Once extraction has completed, jUpgrade installs the new Joomla version and then migrates your old database to the new database which it has created. Your new site will be installed in www.mysites.com/jupgrade assuming that your Joomla 1.5 installation is in your html root.
Check Your New Joomla! Installation
Please do a full site review of your new Joomla installation and make sure everything is set up properly. Your new Joomla site will be installed in www.mysites.com/jupgrade assuming that your Joomla 1.5 installation is in your html root. Here is a general checklist:
Links to external sites probably didn't change during the migration but the internal links might have been affected. Verify that all external and internal links are correct with a program such as Xenu's Link Sleuth.
Work is currently being done on the template upgrade feature of jUpdate and it is not yet fully functional. Your module positions may have to be adjusted in the module manager.
If you had custom templates or templates other than those installed as defaults, they may have been copied from your version 1.5 files. If so, they now must be upgraded or modified and then Discovered. See Upgrading a Joomla 1.5 template to Joomla 2.5.
If everything looks good to go, backup the new Joomla installation.
Overview of the Rest of the Process
Quick overview of what we are going to try to do now:
- Relocate our Joomla 1.5 installation to a subfolder as a "just in case".
- Relocate our new Joomla installation to the html folder.
'It should happen in this order' If you do it in reverse order, the new Joomla files will get mixed with the Joomla 1.5 files (many of 1.5 files will be overwritten) and you will have a big mess! Your site will likely still work, but it's a security ticking time bomb waiting to go off.
Next log onto your host's file manager (e.g. cPanel, Plesk, etc) or an FTP Client, however, preferably a file manager. The general procedure is (it should take about 30 seconds if you review the steps before you start):
- Create a subfolder (e.g. myoldsite) for the Joomla 1.5 installation in your html root, e.g. public_html/myoldsite
- Select all the folders (***except the jupgrade folder***) and files in the html root and move them into the Joomla 1.5 subfolder (e.g. myoldsite)
- Select all the folders and files in the jupgrade folder and move them to the html root
- Double check the frontend and backend
Clean the Database
This procedure is optional. In the process of migration using jUpgrade, the MySQL database has grown. At the end of the migration, the old tables and some newly-acquired tables are no longer needed.
Verify the Database Prefix
In your new site's Administrator, open the Global Configuration page. Then select the Server tab and look in the Database Settings area for the Database Tables Prefix field. Any tables with that prefix must not be removed during the following cleaning operations.
Use PHPMyAdmin to Remove Excess MySQL Tables
- Backup the database by Exporting it. If you Drop essential tables, your site will break. Be prepared to Import the database backup and start over.
- In the database Structure display, check and then Drop the tables with the "jupgrade_" prefix.
- Test your site. If it still functions, continue. If not, restore the database by Importing it.
- Check and drop tables associated with your old Joomla 1.5 site. Those usually have the "jos_" prefix.
- Test your site again. If all is well, continue.
- Verify that the remaining tables have the prefix noted earlier on your site's Global Configuration page. Remove any additional tables without that prefix.
- Site still working? If so, you're done with this procedure.
How to Manually Migrate Joomla
If Jupgrade did not work out for you like many of us, you might want to consider manual upgrade. Be warned, however, that this process is very tedious (especially see step 6 below), and the procedure is not well tested as of yet (if at all). So just like the Jupgrade method, you will want to backup your database just in case. Before upgrading you should check to make sure every extension you want is Joomla 2.5 compatible. Also back up your directory files just in case and keep a list of the extensions you used.
Now onto the upgrade; please note that the following procedure should only be chosen if all else fails, and requires a good working knowledge of MySQL! See the last paragraph of this section for a possibly less tedious alternative to doing steps 1, 2, 6 and 7) :
Step 0: First of all, as always before big changes, backup all your data; that includes all files as well as exporting all database tables.
Step 1: If you want, you can convert the prefixes of all the tables in your database. This is especially useful if you would like to keep your 1.5 database in parallel to your new installation, at least for the transition period. It is best done using a script; the "MySQL Table Prefix Changer Tool" available at Nilop is one that worked well.
Note: Executing this script will stop your old site from working because after the prefix conversion, your old installation can't access the database anymore (it will still try to access the tables by their old prefix)! If you wish to re-enable your old Joomla installation, wait until the script has finished and import the database you exported in step 0.
In order to run the script, first upload it via FTP to the root of your site. Now you can launch it by pointing your browser at Mysite.com/prefix.php (assuming you named the script "prefix.php"). The script will ask you for several pieces of information before it can do its job. Among them is of course the new prefix you wish to use for the new version of Joomla. Joomla 1.5 defaults to a prefix of "jos" -- whatever prefix you choose make sure it is different from that; we recommend "jml" or "j16", for example. Once you have filled in all the information, the script is ready to perform the prefix conversion.
Notice in the following screen shot that the table prefix of our Joomla 1.5 installation is "jos":
For Joomla 2.5 you want it converted to "jml" as seen here:
Step 2: Export all the database tables you would like to use on your Joomla 1.6+ site. Usually this corresponds to content and components.
Step 3: Uninstall your old site including the database, files, and directories that are associated with Joomla. Or if you would rather just test the upgrade, skip this step and create a new directory for your joomla 2.5 installation.
Step 4: Install the new version of Joomla via FTP or cPanel. If you have no database associated with it, install a new database and user.
Step 5: Install upgraded components and other extensions you used before onto your new Joomla 2.5 site. This should be done now to prevent your old database tables from getting overwritten later. Note: It is possible that some developers made changes to the SQL schema of individual tables when they upgraded their extension to joomla 2.5. We recommend that you check the documentation for each extension you had installed on your old Joomla site and for which you install an upgrade into your new Joomla site concerning special database upgrade considerations.
Step 6: Convert the table schemas in the .sql file you exported in step 2 (containing your Joomla 1.5 tables) such that they are compatible with the version of Joomla! you are upgrading to. This is a very tedious process - you'll have to check the database schemas for changes between the version of Joomla you're upgrading from and the 2.5 version you're upgrading to, and modify the SQL file accordingly. Note: This step could use a more detailed description, if you have ever done a manual Joomla migration, please help and share your experiences and knowledge here!
Step 7: Import the upgraded .sql file into your Joomla 2.5 database.
Keep the following in mind: It is possible for settings to get lost depending on how each component stored them. From personal experience it worked just fine, but you may want to review the settings of each component.
For an easier way to migrate articles, categories/sections, contacts, images, and users, be sure to use J2XML for exporting and J2XML Importer for importing the data.
- Verify that you have PHP version 5 or later. (use phpinfo() or /usr/bin/php --version)
- Are you getting errors with the progress bar in Internet Explorer (Windows XP)? - Use the Firefox browser: http://www.mozilla.com/en-US/firefox/
- Go through the Requirements and Before You Get Started sections above and double check everything!
- Report Bugs: http://matware.com.ar/foros/jupgrade.html
- Support: http://matware.com.ar/foros/jupgrade.html
Check for Override Errors
Turn on debug feature: Administrator > Site > Global Configuration > System > Debug Settings > Debug System > Yes.
Load a page of the Website. Any errors? If you see any errors reported or if the content does not appear, remember that overrides must also be edited when moving from version 1.5 to later versions.
Does your (custom) template have an html directory? If yes, that indicates the presence of overrides. You can quickly check whether overrides are causing problems. Temporarily rename the templates/<template_name>/html directory.
Another method to locate template problems is to switch to one of the templates provided in the core distribution of Joomla such as Beez.
How You Can Contribute and Help
Creating an extension as significant as jUpgrade requires an enormous amount of time and effort considering the major structural changes between Joomla 1.5 and the later versions. Add to this the fact that during each release of Joomla 1.6 betas, the extension would have to be modified to work with the new changes between releases, and all of a sudden it's too hard for any one person to complete in a short period of time (especially when you are not being paid).
With this being said, it's time to step up and make a difference, whether big or small. Have you profited from Joomla in the last year? Are you excited about the future of Joomla? Would you like to contribute back and show your gratitude? Now you can in this project! We, as part of the Joomla community, are calling on the entire Joomla community to help out in whatever way you can. You don't have to be a master developer, just go through this tutorial on a test site and if you come across any bugs, report it. If you know how to fix it, create a patch for it. If you are a master developer, step up to the challenge.