Fatal error Class JClassLoader
In Joomla 3.4.2 we changed the way our Composer libraries are loaded.
If you try to move a website from a Linux based Host to a Windows based host or if you have a CentOS server you can run into the following error:
Fatal error: Class 'JClassLoader' not found in JROOT\libraries\cms.php on line 38
If you don't have a CentOS server or move your installation from Linux to Windows you actually don't have any known problems!
- On Windows (not case sensitive) that file gets replaced (all fine)
- On Linux (case sensitive) both files are still there and as the correct file is loaded in the code we only use the working file. (all fine)
- On CentOS you may get an error on updating that you have a name conflict.
- If you copy the files from the Linux Host to the Windows host it is possible the wrong file gets removed.
What is the cause
Modifications to how Joomla wraps the Composer autoloader were made between 3.4.1 and 3.4.2 to improve the API structure, this included changing the file's name from ClassLoader.php to classloader.php which introduced errors under very specific conditions.
How to fix
Apply the patch https://github.com/joomla/joomla-cms/pull/7307.diff. This will be included in the Joomla 3.4.3 release.