Das unterschiedliche Verhalten von spl_autoload_register b/n online und localhost
-
21-12-2019 - |
Frage
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
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;
}
});