Ok I have a solution.
If you work on a locally on a development machine and want to move your site to ‘production’ or your web-host then this is one way I got mine to work.
Just for background information, when I am developing a site locally (I’m on OS X) I set up a host name of the site to have a .dev extension. So if my actual production site was to be jameswhittaker.com then my dev system would have a host name of jameswhittaker.dev. I also develop my sites using templates stored as files, which are located inside my system folder.
Before we do anything login to your local ‘development’ EE control panel and go to Admin > Utilities > Clear Cached Data select AllCaches and press submit.
1) Backup your local ‘development’ site AND database. I use CocoaMySQL on the Mac for administering my databases.
2) Export your database as SQL (best to add drop table to exports if you can) and save as a file. Save as raw SQL, not as a ZIP or anything like that.
3) Open up your FTP program (Transmit on OS X) and open up your sites directory on your web host.
4) Copy over everything from you local EE to your webhost, including your .htaccess file. EXCEPT any install.php (which you should have removed anyway).
5) Edit the config.php file on the remote server with your new server & MySQL details then save.
6) On your local machine, find the SQL file we saved in step 2 and open in your favourite text editor (TextMate on OS X). Now do a global find and replace. Replacing your sites name with the .dev extension to your .com extension (or whatever). Now save the SQL as a copy, keeping your original.
7) Now import your SQL file that we saved in step 7 to your remote database.
8) Go to your hosted sites admin control panel. It will look awful and be totally unstyled, we will fix that now. Go to Admin > System Preferences > Theme Folder Path and change to the path on your remote host to your themes folder. Now go to Templates > Global Template Preferences and change ‘Basepath to Template File Directory’ to your new path on your web host.
9) Now make sure that your uploaded file contents’ permissions are set correctly as per the installation docs. If you are unable to turn your site off from the control panel this is because you have not set your permissions properly on your uploaded files & folders (specifically config.php).
Also you will have to change your file upload paths as they will be different between systems due to the server path.
Don’t forget that you also have to copy the .htaccess file across too!
Done!
Now obviously if you are using external template files go through those and change any .dev extensions to your production extensions ( I forgot first time round!).