2010-10-04 5 views
4

Cela fonctionne:problème avec PHP inclure dans

require_once 'ModuleTest.php'; 

Mais ce ne sera pas:

require_once './ModuleTest.php'; 

Pourquoi? Cela conduit au même fichier! (Je suis sur Os X, donc le chemin du fichier est correct). Les deux fichiers sont dans le même répertoire.

+0

Je ne vois pas pourquoi cela aurait de l'importance mais bon, avez-vous essayé avec des guillemets doubles? – Vache

+0

Oui, j'ai juste essayé, n'a pas changé une chose –

Répondre

0

Avez-vous passé la barre oblique à un '\'? Je pense que cela peut être le problème, mais n'étant pas un utilisateur OS X, je ne suis pas sûr ...

+0

J'ai utilisé le code que j'ai écrit ici. Sur OS X, c'est comme Unix, donc pas de "\" –

+0

Oh (pas sûr d'avoir compris votre question): Je n'ai pas remplacé "/" par "\" sur mon système (ou fichier de configuration PHP, ou quoi que ce soit) –

1

require (et) fonctionne différemment si vous spécifiez un chemin et si vous êtes déjà dans un fichier inclus. Sans le chemin spécifié, il recherche d'abord dans le chemin d'inclusion (c'est-à-dire une liste prédéfinie d'emplacements où les fichiers d'inclusion peuvent être), puis dans le chemin du script original qui a été exécuté, et s'il ne l'est pas. le trouve là, il regarde dans le chemin du fichier courant (c'est-à-dire celui qui fait réellement l'include). Cependant, si vous spécifiez un chemin, il ignore la première partie et ne regarde que le chemin relatif au script d'origine. Par conséquent, si vous dites include('ModuleTest.php');, il cherchera dans plus d'emplacements pour cela que si vous dites include('./ModuleTest.php');. Voir le documentation page for include() pour voir exactement ce qui se passe.

Cela peut être déroutant, et le meilleur conseil est de garder la structure de votre chemin aussi facile à gérer que possible.

+0

Ok mais ici, les deux fichiers sont dans le même répertoire! Donc ça devrait marcher. –