Just want to write this post to share my findings on how to install Magento 2.0 on XAMPP in localhost.

I got a windows 8.1 laptop and the below post describes installing Magento 2.0

Step 1: XAMPP

Download XAMPP from https://www.apachefriends.org/index.html.  Please ensure you have MySQL 5.6 or higher and PHP 5.5 or greater.  Refer http://devdocs.magento.com/guides/v2.0/install-gde/system-requirements.html for the exact system requirements.

Once installed ensure that the XAMPP is running by launching or http://localhost

I installed XAMPP under D:\xampp folder.  It is always better not to install under C drive.

Step 2: Install Composer

Download composer from https://getcomposer.org/.  I just downloaded the Windows setup file and I installed.  While installation it will ask for the PHP installation directory.  By default it will identify the PHP path.  In case if that doesn’t defaulted then please select the path where php.exe exists.  It will be usually under XAMPP php folder.

Step 3: Download Magento

Download magento from http://www.magentocommerce.com/.  I downloaded the CE edition with Sample data. I created a folder ‘magent20’ under ‘D:\xampp\htdocs\’ and extracted the downloaded magento ZIP package.

Step 4: Create Database

Launch the PhpMyAdmin using http://localhost/phpmyadmin and create a database called ‘magento20db’.

Step 5: Update Magento Dependencies

To update Magento dependencies you need to have secure keys to connect Magento repository.  Go to http://www.magentocommerce.com/ and create an account.  Login and click ‘My Account’ and click ‘Connect’.  Click on ‘Secure Keys’ and create a key.  Give the name as ‘repo.magento.com’ and create the key.  It will generate a private and public key.  Note these keys in a notepad.

Now open a cmd prompt.  Go to the magento root folder.  In my case go to ‘D:\xampp\htdocs\mgento20’ and type ‘composer update’.  This will ask for a username and password connect to the magento repository.  Give the public key as username and private key as password.

This will now connect to the Magento repository and download all the dependencies.  You much be connected to Internet.

Step 6: Install Magento

Launch ‘’ from the browser.  Do not launch using localhost because that created some problem for me.  Always use instead of localhost.  This will take you to the Magento installation page and you can just continue till end.  Input the database details which we have created earlier.  The default username is ‘root’ and password is empty.  At the end of installation page, it will provide you a summary of details which will contain the admin and frontend URL.  Note down in the notepad.

Step 7: Post Installation (Troubleshooting)

Launch the admin back-end URL.  For the first time it might take some time and it will give you a login page.  The login page contains a magento logo and ensure that the magento logo appears correct.  If it is broken then you have to clean up the static content as below.

Open windows explorer and go to ‘D:\xampp\htdocs\magento20\pub\static’ folder.  Clear all the content inside except the ‘.htaccess’ file.

Open the cmd prompt and go to ‘D:\xampp\htdocs\magento20\bin’ folder and run the below command

php magento setup:static-content:deploy

This will run for a while with lots of dots….  Once complete try launching the Magento admin URL and it should work fine.

We are developing a professional school extension (JEEMA School) for Joomla platform with lots of functionalists.  Some of the key functionalists are listed below.

1. Custom profiles and profile fields

2. Student Management

3. Staff Management

4. Parent/Guardian Management

5. Siblings and singe parent login

6. Front-end dashboard with key information

7. Email and SMS notifications

8. Cron / Background processes

9. Staff Leave Management

10. Staff Payroll Management

11. Courses & Sections (multiple levels)

12. Batches, Subjects, Electives

13. Student Attendance

14. Exams & Results

Etc.. Etc… Etc…

Check this page for more updates.  The ETA for the first stable release would be around Christmas 2015

Today while developing my Joomla component I was told to show custom error message while doing javascript validation at admin side.

Based on the Joomla documentation you can set a field as required as below.

<field name="totalsms" 
 label="Sample Admin Field"
 required="true" />

The above field will be automatically validated at admin side if the form is submitted without giving a value in it.

However my requirement was to validate a field’s value based on another field’s value.  In my admin form I have 2 fields named as ‘Need Book’ and ‘Which Book’.  Need book is a list button where Yes or No will be displayed.  If the admin selected ‘Yes’ then the next field Which Book should be validated for mandatory.

Here is what I did today.  Definitely there would be better ways to do.

In Joomla admin, the error messages are displayed as below.


These error messages are displayed under a div container ‘system-message-container’.  My idea is to hack this div container and show my custom error message.

Below are the javascript methods I introduced

This javascript method will create a new div container with the provided message and add them inside system-message-container.

function addCustomMessage(message, uniqid, css){
 css = typeof css !== 'undefined' ? css : '';
 var errcontainer = document.getElementById('system-message-container');
 var pnode = document.createElement("p");
 var textnode = document.createTextNode(message);
 var divnode = document.createElement("div");
 var already_available = document.getElementById(uniqid);
 if(already_available) return;
 divnode.className = "alert "+css;

This javascript method is to delete the newly created div container

function removeCustomMessage(uniqid){
 var parent = document.getElementById("system-message-container");
 var child = document.getElementById(uniqid);

Below is the javascipt code which does the validation in my default.php

if(document.getElementById('jform_need_book').value == 'YES' && document.getElementById('jform_which_book').value == ''){
  addCustomMessage("Please select a book", 'val_select_book', 'alert-error');

Thats all.

Today I spent some time to upgrade my shopping website from Magento CE 1.8 to Magento CE 1.9. In order to upgrade I first tried to do the upgrade on my own in my localhost under XAMPP and I am sharing the same in this blog.


1. Latest Magento Package. Magento 1.9 was the latest at this point in time.

2. SSH connection to production server to download the production magento database

3. XAMPP setup up and running

Step 1 – Setup your Localhost

1. Go to http://www.magentocommerce.com/download and download the Magento 1.9 CE version in ZIP format

2. Create a folder called ‘mag19’ under localhost xampp folder

3. Unzip the downloaded Magento 1.9 ZIP file and uncompress inside ‘mag19’ folder

4. Open PhpMyadmin and create a database called ‘mag19db’

Continue reading

You need to contact the component owner and get the latest component and upgrade the existing component. This will automatically update the version number to the latest version that comes in the latest package.

However some of technical consultants do the 3rd party component upgrade manually by uploading the PHP files manually via FTP and running the SQL commands manually via PhpMyAdmin.

The common mistake make consultants will do to update the version number. Joomla stores the version number in 2 different tables.


Login to PhpMyAdmin and search the component in #_extensions table. Edit the corresponding record and locate the version number in manifest_cache field. Carefully replace the existing version number with the new version number and save the record

Navigate to #_schemas table and search for the same component. Edit the corresponding record and replace the existing version number with the new version number and save the record.

Today I face a strange problem while doing ‘ant clean’ after building the phonegap project.  The full error is as below.

\CordovaLib\build.xml:55: sdk.dir is missing. Make sure to generate local.properties using ‘android update project’ or to inject it through the ANDROID_HOME environment variable.

The problem is because the local.properties file inside the cordova library project is incomplete.  By default the local.properties file will contain the path for sdk.dir.  In my case the file was empty.  I just copied the local.properties from some other project and replaced here and the problem solved.

I was doing some Android project using phonegap where I was asked to release the signed APK using command line without any user input.  I use ‘ant’ utility to create the signed APK.  But ‘ant’ expects the key settings should be available before doing the release.

‘keytool’ is one such tool to create keys and that key can be used for ‘ant’ to create the APK.

keytool -genkey -noprompt -keystore mykeystore -storepass mystorepass -alias myfirstkey -keypass firstpass -dname “CN=net.jeema.sms, OU=web, O=JEEMA, L=Tirunelveli, S=Tamilnadu, C=IN” -validity 10000

You need to navigate to the android project folder and execute the above command.  This command will create a file ‘mykeystore’ in the directory and create the key ‘myfirstkey’ along with the password inside the file.

Basically for the first time it will create a keystore called ‘mykeystore’ with the password ‘mystorepass’.  When want to create the second key then the same keystore can be used.

Once the key is created input the key details in the local.properties which is available in the android project folder as below and save it.


Now, the ‘ant release’ command will pick the above key details and able to create the signed APK.  The APK will be available under the bin directory.

Today I got the error ‘CordovaActivity cannot be resolved’ in Eclipse while loading my existing Phonegap android application.  After few hours I figure out the problem myself.  When you load the Phonegap application in Eclipse it will load 2 projects, the first one is the Android application project and the second one is the Cordava Library project.

If you load both the projects then only you will get this error.  If you load first the library project and then the application project then you wont have this problem.

Step 1 – Import the Library project first

Import Library Project

Once imported check the xxxxxx-cordava.jar generated under bin directory

Step 2 – Import the application project

Import Application Project

You don’t see the problem now

Today I tried creating my first Android application project via Eclipse.  I use the Eclipse Luna version and trying to create an Android application project for target Android 4.4 release.

I launched the Eclipse icon by double click on the icon and start creating the project.  After I provide all the details like application name, project name, package name, activity name etc… after I hit the finish button it keeps on loading.

I tried few changes in eclipse.ini file which is located in the eclipse installed directory by increasing the memory.  But still the problem exists.

Something trigger my mind.  I use Windows 7 and I installed eclipse inside Program Files folder and I know windows 7 using different permission levels to access anything inside program files folder.

Now I right click on the eclipse icon on desktop and I ran this time as ‘Run as administrator’ and tried creating the project.  It works !!!!

Myself and my friend are located in 2 different locations and we are developing a project which uses webservices using PHP.  My friend was developing the server part in his laptop and I was developing the client part.

This is our first webservice project and we tried to integrate both of our components in a web server and the fun started.

We hit the below error

DTD are not supported by SOAP

I was blaming him that he has done something wrong and he started blaming me too… We spent almost half a day and finally figure out the problem.

The problem was both of us using our localhost (XAMPP) to develop our web servers.  But we forgot the part that when we upload to server we need to change the URL from localhost to the web domain name.

Where the URL is located

When you develop the server component you create a .wsdl and a equivalent .php file.  Our web service is named as ‘wpmobile’ and so we had ‘wpmobile.wsdl’ and ‘wpmobile.php’.  The URL is located in the ‘wpmobile.wsdl’ with the XML name tag ‘soap:address’.

<soap:address location='http://localhost/wpserver/wpmobile.php'/>

Changed the above as below and it started working

<soap:address location='http://domainname.org/wpserver/wpmobile.php'/>

This is very common mistake many of us do.