Comportement différent de spl_autoload_register b/n en ligne et localhost
-
21-12-2019 - |
Question
J'ai la structure de répertoires suivante, j'y mets toutes mes classes classes/
comme indiqué ci-dessous, et j'ai un header.php
qui appelle à la fois tous les fichiers et possède d’autres paramètres importants que tous les fichiers partagent.
Maintenant, si j'utilise spl_autoload_register()
Par ici:
spl_autoload_register(function($class){
include 'classes/'. $class .'.class.php';
});
à l'intérieur inc/header.php
fichier et appelle ça header.php
de mon index
fichier, cela fonctionne bien sur mon hôte local, mais lorsque je télécharge tout le script tel quel sur un hôte en direct, j'obtiens des erreurs du type.
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
est le spl_autoload_register()
Je ne comprends pas comment cela a pu arriver, et j'espère que quelqu'un a une idée.
merci
La solution
Pour montrer ce que je veux dire avec mes commentaires, ajoutez ce code dans votre fichier index.php et supprimez l'autoloader de vos autres fichiers :
spl_autoload_register(function($class){
$classesPath = dirname(__FILE__) . '/classes/';
if (is_file($classFile = $classesPath . $class.'.class.php')) {
include $classFile;
}
});
Pour inc/header.php :
spl_autoload_register(function($class){
$classesPath = dirname(__FILE__) . '/../classes/';
if (is_file($classFile = $classesPath . $class.'.class.php')) {
include $classFile;
}
});