A. A quoi cela sert-il ?
require ("./file.php");
B. par rapport à cela ?
require ("file.php");
(Son pas up-one-directory.. qui serait)
require ("../file.php");
A. A quoi cela sert-il ?
require ("./file.php");
B. par rapport à cela ?
require ("file.php");
(Son pas up-one-directory.. qui serait)
require ("../file.php");
./
es el actuel répertoire. C'est en grande partie la même chose que file.php
mais dans la plupart des cas (y compris celui-ci), il ne vérifie pas les endroits standards où PHP pourrait chercher un fichier, en vérifiant plutôt sólo le répertoire actuel.
De la Documentation PHP (remarquez la dernière phrase) :
Les fichiers à inclure sont d'abord recherchés dans chaque entrée include_path relative au répertoire de travail courant, puis dans le répertoire du script courant. Par exemple, si votre include_path est libraries, le répertoire de travail actuel est /www/, vous avez inclus include/a.php et il y a include "b.php" dans ce fichier, b.php est d'abord cherché dans /www/libraries/ et ensuite dans /www/include/. Si le nom du fichier commence par ./ ou ../, il est recherché uniquement dans le répertoire de travail actuel.
La première version force le mécanisme interne à inclure des fichiers relativement au fichier... directement exécuté. Ainsi, par exemple, vous avez
index.php
// directly executed script (php -f index.php or from a browser)
include 'second.php';
second.php
// This is included relatively to index.php
// Actually, it is first searched relatively to include_path, then relatively
// to index.php
include './third.php';
troisième.php
// This is included relatively to second.php ONLY. It does not search
// include_path
return "foo";
J'ai fait quelques erreurs que j'ai maintenant corrigées, l'ordre de recherche était incorrect. La preuve est la réponse au-dessus de la mienne.
En third.php
est en fait faux. third.php
est en fait inclus relativement à index.php
seulement. En fait, même cela est faux. Il est en fait inclus relativement à la le répertoire de travail actuel seulement. Par exemple, si index.php
est situé à /var/www/index.php
. Et vous vous rendez dans un autre répertoire, (ex. cd /var
) et ensuite vous essayez d'exécuter index.php
por php www/index.php
alors quand tu le feras include './third.php'
php va essayer de le trouver dans /var
et échoue s'il n'y est pas
La réponse courte
Vous avez raison, ce n'est pas un répertoire en haut. Un . fait référence au répertoire dans lequel vous êtes, et .. fait référence au répertoire parent.
Autrement dit, ./file.php et file.php sont fonctionnellement équivalents en PHP. Voici la page de documentation correspondante : http://us.php.net/manual/en/wrappers.file.php
La réponse la plus longue
Cependant, ce n'est pas parce qu'ils fonctionnent de la même manière dans ce contexte qu'ils sont toujours les mêmes.
Lorsque vous travaillez dans un environnement shell *nix et que vous tapez le nom d'un fichier exécutable, le shell consulte les répertoires PATH, mais pas le CWD, ni le répertoire dans lequel vous vous trouvez.
Ainsi, si vous vous trouvez dans un répertoire contenant un fichier appelé : myprogram.php (il s'agit d'un fichier PHP CLI) et que vous tapez simplement :
myprogram.php
il importe peu que votre programme soit exécutable ou non. L'interpréteur de commandes cherchera votre fichier dans /bin/, /usr/bin/, etc., mais il ne cherchera pas dans ./, ou le répertoire dans lequel vous vous trouvez.
Pour exécuter ce programme sans ajouter votre répertoire au PATH, vous devez taper
./myprogram
Donc en fait, ./ est plus explicite. Il signifie "le fichier que vous recherchez DOIT se trouver ici" et pas de ./ qui signifie "le fichier doit se trouver quelque part dans le programme qui recherche des fichiers".
Vous demandez simplement à php d'inclure le fichier dans le répertoire courant. sólo ou échouer si le fichier n'est pas présent.
Si vous utilisez le format "indexcommon3.php" et que le fichier n'est pas présent, php le cherchera dans la variable système include_path.
À titre de référence, vous pouvez utiliser http://www.php.net/manual/en/function.include.php
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.