Je simple application web PHP avec la structure suivante:Compositeur autoload.php ne se charge pas dans les espaces de noms et classes sur l'hébergement en direct
/ (composer.json .htaccess ...)
/Core/ (Router.php, Controller.php ...)
/App/ (/Controllers, /Models, /Views ...)
/Public/ (index.php ...)
/Vendor/ (autoload.php /composer ...)
Les codes fonctionne sans problème sur mon serveur local.
Lorsque je le copie sur un serveur live et apporte les modifications nécessaires à .htaccess dans la route, j'obtiens l'erreur suivante: Erreur fatale: Classe 'Core \ Router' introuvable dans .... J'ai essayé 3 hôtes différents mais pas de chance.
Le problème semble être lié à la fonction de chargement automatique du compositeur ne se chargeant pas dans les espaces de noms et les classes utilisant psr-4. Je cet ensemble dans mon fichier composer.json:
{
"autoload": {
"psr-4": {
"Core\\": "Core/",
"App\\": "App/"
}
}
Le code pour mon projet est sur GitHub à
https://github.com/imoprojects/upbook
Je suis nouveau à la programmation dans une structure MVC et aussi à l'utilisation compositeur de cette manière.
Si quelqu'un pouvait aider avec ce qui se passe peut-être, je l'apprécierais vraiment.
Cheers, Ian
Avez-vous fait 'composer install' sur le serveur après avoir copié votre projet? Si vous copiez des fichiers, y compris le dossier du fournisseur, effectuez 'dump du composeur' pour actualiser l'autoloader. –
Développez-vous sur Windows et ne vous souciez pas des noms de fichiers? –
En tant que sidenote, vous ne devez pas valider le répertoire de votre fournisseur. Cela est supposé être généré automatiquement via 'composer install' à chaque déploiement. Vous êtes censé commettre votre 'composer.lock', le cas échéant. – apokryfos