Probleme mit Autoloader - Local funktioniert es - Online nicht

xtramen01

Erfahrenes Mitglied
Hallo Leute,
ich habe gerade mal meinen selbst entwickelten Shop auf meinen Webserver hochgeladen und stele fest, das es dort nicht funktioniert.
Ich gehe davon aus, das es am Autoloader liegt. Aber warum?!

Auf meiner lokalen Xampp Installation unter WIndows, läuft alles super.
Auf meinem Webserver (CentOS, Plesk, PHP 5.3.3) läuft es nicht. Die Log sagt:

PHP Fatal error: Class '_Core\\Controllers\\FrontController' not found in /var/www/vhosts/xxxxx/httpdocs/entwicklung/shop/index.php on line 35

Mein Autoloader sieht wie folgt aus:

PHP:
    Namespace _Core;

    class Autoloader {

        public static $loader;

        public static function init(){
            if (self::$loader == NULL)
                self::$loader = new self();

                return self::$loader;
        }

        public function __construct(){

            spl_autoload_register(array($this,'autoload'));
            spl_autoload_register(array($this,'tpl_engine'));
        }

        public function autoload($class){
            $class = str_replace('\\', DIRECTORY_SEPARATOR, $class);
            spl_autoload_extensions('.php');
            spl_autoload($class);
        }

        public function tpl_engine($class){
            if (file_exists('_Core/External/Smarty/libs/' . $class . '.class.php')) {
                require '_Core/External/Smarty/libs/' . $class . '.class.php';

            }
        }


    }

Und die Zeile 35 in der index.php ist folgende:

PHP:
FrontController::Init();

Und davor in Zeile 10:

PHP:
use _Core\Controllers\FrontController as FrontController;


Auf meiner lokalen Xampp Umgebung kann ich den Fehler reproduzieren indem ich anstatt DIRECTORY_SEPARATOR irgend einen unsinnigen Wert eintrage.
Hat jemand einen Tipp oder sieht einen Fehler? Ich bin leider ratlos.

Danke und Gruß
 
Zuletzt bearbeitet:
Versuche doch mal den Pfad auszugeben:
PHP:
 public function tpl_engine($class){ 
  $filepath = '_Core/External/Smarty/libs/' . $class . '.class.php';

  echo $filepath;

  if (file_exists($filepath)) {
    require($filepath);
  }
}
Eventuell liegt es an den (Back-)Slashes auf verschiedenen Systemen (Windows, Unix).
 
Sorry mein Fehler.
Der Autoloader für die tpl_engine ist davon nicht betroffen.
Ich habe als DIRECTORY_SEPERATOR schon alles mögliche verwendet, geht dann immer noch nicht.

Das komische ist, wenn ich die Klasse manuell per include einbinde, wird sie auch gefunden und die Fehlermeldung bezieht sich dann auf die nächste Klasse, die per Autoload geladen werden sollte.
 
Zuletzt bearbeitet:
Zurück