2010-05-05 20 views
1

Lorsque je cours phpinfo() et regarde par la catégorie Configuration sous PHP Core, je vois une directive intitulée include_path, avec une valeur locale et une valeur maîtresse.Comment savoir quel chemin include sera utilisé en PHP?

Dans ce cas, ma valeur locale est définie sur

 
.: 
./include: 
../include: 
/usr/share/php: 
/usr/share/php/smarty: 
/usr/share/pear 

et ma valeur est réglée sur

 
.: 
/usr/share/php: 
/usr/share/pear: 
/usr/share/php/pear: 
/usr/share/php/smarty 

La raison pour laquelle je suis en train d'apprendre comment cela fonctionne est parce qu'il ya une fichier dans le système que je travaille sur le titre Smarty.class.php, qui, je suis sûr, semble très familier à quiconque utilise Smarty Templating Engine.

L'un des fichiers PHP a ce qui suit comprend:

 
require_once("Smarty.class.php"); 
require_once("user_info_class.inc"); 

Le fichier user_info_class.inc est dans le même répertoire que le fichier faisant le comprennent, ce qui est parfaitement logique pour moi, et la façon dont je J'ai toujours référencé des fichiers. J'ai décidé que je voulais ouvrir le fichier Smarty.class.php et supposé que ce serait dans le même répertoire, mais ce n'était pas le cas. Après avoir fait un peu de creuser, j'ai découvert ces variables php_ini, et a finalement été en mesure de localiser le fichier dans le répertoire usr/share/php/smarty/.

Il semblerait donc que lors de la création d'un include, il suive une sorte d'ordre entre les valeurs Local et Master pour le include_path.

En supposant que mes déductions étaient correctes jusqu'ici, quelqu'un peut-il expliquer l'ordre dans lequel PHP recherche les fichiers à inclure?

Répondre

1

La valeur globale est fondamentalement ce qui est défini dans php.ini. La valeur locale est ce qui est actuellement utilisé. La valeur locale écrase complètement la valeur principale.

Selon le manuel, PHP vérifie les chemins dans l'ordre où ils sont spécifiés dans le cadre include_path: http://php.net/manual/en/ini.core.php#ini.include-path

+0

Impressionnant, merci beaucoup Allen. Cela répond parfaitement à ma question. ++ –