Bonjour,
J'ai développé une application sous windows faisant appel à des classes avec namespaces, ...
J'ai mis en place un mécanisme d'autochargement des classes avec spl_autoload. Tout marchait bien.
Quand j'ai déployé sur un serveur linux, il ne trouve plus mes classes.
J'ai fait un test sur une petite page, en enlevant les namespaces,.... mais rien n'y fait.
Voici le code simplifié qui ne fonctionne pas (j'ai volontairement mis tout le code dans le même fichier index.php :
Ma classe Utilitaire est dans le dossier Config sous index.php.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <?php define('RACINE', __DIR__); spl_autoload_extensions('.php'); set_include_path( '/home/xxx/public_html/cciV1/Config/' //RACINE . DIRECTORY_SEPARATOR . 'Config' . PATH_SEPARATOR ); echo get_include_path() . '<br>'; if (spl_autoload_register()) { echo 'ok'; } else { echo 'KO'; } ?> <html> <head> <meta charset="UTF-8"> <title>Exercice CCI</title> </head> <body> <?php echo '<br>Bienvenue <br>'; try { //include '/home/xxx/public_html/cciV1/Config/Utilitaire.php'; echo Utilitaire::getMessage(); echo "super"; } catch (Exception $ex) { echo $ex->getMessage() . " - code : " .$ex->getCode(); } ?> </body> </html>
La classe ne se charge que lorsque je fais un include comme celui avant l'appel à la fonction getMessage().
Les deux possibilités censées fournir le même résultat dans le set_include_path ne travaillent pas, et la fonction spl_autoload_register renvoie vrai.
J'ai vérifié la casse, ...
Merci pour vos retours.
Cordialement
Partager