When you run your PHP code on the Linux platform, it is important to remember that Linux is case sensitive with file names.
This affects autoloaders because they typically use the namespace and class name when creating the download file.
If the folder has the name core , then the namespace must be core with the same capitalization. If you change it to core in the namespace, then you must do the same with the folder name. (and as a result, all other core classes must be changed to core at the same time).
On Windows, this does not happen because the Windows file system is not case sensitive. This can cause confusion when checking code and working with a local Windows-based system, and then breaks when copying to a Linux-based server.
[EDIT]
Ok, so I skipped that you changed the name dirname too. But still, I still think this is a problem with the file name / dirname.
I note that you are calling spl_autoload_register() without any parameters. This means that the default function spl_autoload() will be used as the autoloader.
If you read the documentation for spl_autoload() , you will notice that it uses a version of the class and namespace with a lower base.
In other words, using the default autoloader, your classes may be mixed, but the folder structure and file names should be lowercase.
So, for you, you need to keep your names lowercase.
I personally experienced this in the reverse order, according to my original answer, where I had the full file name with lowercase, and my mixed case class name broke when I switched from the Windows dev window to the Linux server. The reason my experience is different from yours is because I use a specially written autoload function that does not perform conversion with automatic lower case, so the case with my names should match my class name.