2017-09-02 4 views
0

J'ai la hiérarchie des fichiers suivants: screenshotPourquoi ./ n'est pas reconnu comme répertoire courant dans mon fichier php?

et require_once est en quelque sorte ne fonctionne pas (Attention: require_once (./ AutentificadorJWT.php): failed to open stream: Aucun fichier ou répertoire dans C: \ xampp \ htdocs \ clases \ usuario.php sur la ligne 2) Pour autant que je sache ./ pointe vers le répertoire courant. Maintenant, les travaux suivants: require_once 'AutentificadorJWT.php'; Pourquoi ./ ne fonctionne pas?

+0

déjà expliqué ici https://stackoverflow.com/questions/579374/what-does-the-dot-slash-do-to-php-include-calls –

+0

Si ./ signifie le répertoire courant, pourquoi require_once '. /AutentificadorJWT.php '; ne fonctionne pas? – user3646717

+0

Le fichier script principal que vous exécutez est index.php et la ligne require_once (./ AutentificadorJWT.php): est appelée dans un autre fichier qui se trouve dans le sous-dossier "class", car le répertoire courant php est "htdocs" comme index.php est le fichier de script en cours d'exécution. –

Répondre

1

Il peut être assez difficile de savoir quel répertoire est le répertoire en cours lorsque vous avez une hiérarchie de code complexe. Si vous voulez avoir un point de référence constant, alors vous pouvez utiliser $_SERVER['DOCUMENT_ROOT'] qui définit la base de votre code sur votre ordinateur. Donc ...

require_once $_SERVER['DOCUMENT_ROOT'].'/base.php'; 

Fonctionne pour base.php à la racine de votre projet. Le seul problème que j'ai eu avec ceci est que les tests unitaires n'ont pas toujours beaucoup de variables $_SERVER.

Vous pouvez également utiliser __DIR__ qui est le répertoire du fichier en cours. Donc, si dans votre cas vous avez changé à ...

require_once __DIR__.'/AuthentifacdorJWT.php'; 

Ce sera toujours par rapport au répertoire du fichier de votre travail avec.