2017-02-06 2 views
1

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

+0

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. –

+0

Développez-vous sur Windows et ne vous souciez pas des noms de fichiers? –

+1

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

Répondre

5

Vous configurez ceci:

"Core\\": "Core/", 

... mais vos classes sont à:

core 

Cela ne fonctionnera au cas où les systèmes de fichiers insensibles.

+0

Merci @ Álvaro qui m'a causé tant de problèmes. Existe-t-il une norme que je devrais suivre en termes de noms de dossiers et de fichiers? Je suis nouveau au développement et j'essaie d'apprendre de bonnes pratiques. – IMO

+0

Il y a PSR-4. Vous l'utilisez déjà ;-) –

+0

Un grand merci, je vais lire les docs cette fois :) ... beaucoup à apprendre! – IMO