J3.x

Fatal error Class JClassLoader

From Joomla! Documentation

Joomla! 
3.4.2

In Joomla 3.4.2 we changed the way our Composer libraries are loaded.

Errors reported

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.

See: https://github.com/joomla/joomla-cms/issues/7296 and https://github.com/joomla/joomla-cms/issues/7307

Versions affected

Info non-talk.png
General Information

This pertains only to Joomla! version(s):- 3.4.2

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.