Frage

enter image description here

Ich habe die folgende Verzeichnisstruktur, in der ich alle meine Klassen abgelegt habe classes/ wie unten gezeigt, und ich habe eine header.php die sowohl alle Dateien aufruft als auch andere wichtige Einstellungen hat, die alle Dateien gemeinsam nutzen.

Nun, wenn ich es benutze spl_autoload_register() Hier entlang:

spl_autoload_register(function($class){
        include 'classes/'. $class .'.class.php';
    });

innen inc/header.php Datei und rufen Sie diese auf header.php Von meinem index Datei, dann funktioniert es auf meinem lokalen Host einwandfrei, aber wenn ich das gesamte Skript unverändert auf einen Live-Host hochlade, erhalte ich Fehlermeldungen wie.

Warning: include(classes/filehandler.class.php) [function.include]: failed to open stream: No such file or directory in /home/.../public_html/....com/inc/header.php on line 9 

Line 9 ist der spl_autoload_register()

Ich verstehe nicht, wie das passieren konnte, und hoffe, dass irgendjemand überhaupt eine Ahnung hat.

Danke

War es hilfreich?

Lösung

Um zu zeigen, was ich mit meinen Kommentaren meine, fügen Sie diesen Code in Ihre index.php-Datei ein und entfernen Sie den Autoloader aus Ihren anderen Dateien:

spl_autoload_register(function($class){
    $classesPath = dirname(__FILE__) . '/classes/';
    if (is_file($classFile = $classesPath . $class.'.class.php')) {
        include $classFile;
    }
});

Für inc/header.php:

spl_autoload_register(function($class){
    $classesPath = dirname(__FILE__) . '/../classes/';
    if (is_file($classFile = $classesPath . $class.'.class.php')) {
        include $classFile;
    }
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top