web-dev-qa-db-fra.com

CodeIgniter: "Impossible de charger la classe demandée"

Sur ma boîte WAMP, j'ai fait ce qui suit:

  1. Ajout d'un fichier appelé /application/libraries/Foo.php
  2. Foo.php est une classe et son nom est Foo
  3. Dans /application/config/autoload.php, j'ai ajouté $autoload['libraries'] = array('foo');

Tout fonctionne bien. Lorsque je télécharge sur ma boîte LAMP, j'obtiens le message d'erreur suivant:

Unable to load the requested class: foo

L'autorisation de /application/libraries/Foo.php est 0755. Le propriétaire est identique au reste des fichiers CI. Supprimer foo du chargement automatique élimine le problème.

Des idées ce qui pourrait être faux?

16

Sous Windows, la capitalisation dans les chemins n'a pas d'importance. Sous Linux, c'est le cas. 

Lorsque vous chargez automatiquement, utilisez "Foo" et non "foo".

Je crois que cela fera l'affaire.

Je pense que cela fonctionne lorsque vous retirez le chargement automatique, car codeigniter est suffisamment intelligent pour comprendre la capitalisation dans le chemin et les classes sont indépendantes de la casse en php.

39
evan

J'ai eu un problème similaire lors du déploiement d'OSx sur mon site local sur mon site Linux live.

Il fonctionnait bien sous OSx, mais sous Linux, j’obtenais:

An Error Was Encountered

Unable to load the requested class: Ckeditor

Le problème était que les chemins Linux étaient apparemment sensibles à la casse. J'ai donc dû renommer mes fichiers de bibliothèque de "ckeditor.php" en "CKEditor.php".

J'ai aussi changé mon appel de charge pour correspondre à la capitalisation:

$this->load->library('CKEditor');
3
Ian

Si vous utilisez un serveur Linux pour votre application, il est nécessaire d'utiliser un nom de fichier en minuscule et un nom de classe pour éviter ce problème. 

Ex.

Nom de fichier: csvsample.php

class csvsample {

}
0
Janzell Jurilla