Как узнать, какой путь включения будет использоваться в PHP? - PullRequest
1 голос
/ 05 мая 2010

Когда я запускаю phpinfo() и просматриваю категорию Configuration в PHP Core, я вижу директиву под названием include_path с локальным значением и мастер-значением.

В этом случае мое локальное значение установлено на

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

и мое мастер значение равно

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

Причина, по которой я пытаюсь понять, как это работает, заключается в том, что в системе, над которой я работаю, есть файл под названием Smarty.class.php, который, я уверен, звучит очень знакомо всем, кто использует Smarty Templating Engine.

В один из файлов PHP входит следующее:

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

Файл user_info_class.inc находится в том же каталоге, что и файл, включающий включение, что имеет для меня смысл, и именно так я всегда ссылаюсь на файлы. Я решил, что хочу открыть файл Smarty.class.php, и предположил, что он будет в том же каталоге, но это не так.

После небольшой копки я обнаружил эти php_ini переменные и, наконец, смог найти файл в каталоге usr/share/php/smarty/.

Так что может показаться, что при включении он следует некоторому порядку между значениями Local и Master для include_path.

Предполагая, что мои выводы были правильными, может ли кто-нибудь объяснить порядок, в котором PHP ищет файлы для включения?

1 Ответ

1 голос
/ 05 мая 2010

Глобальное значение - это то, что установлено в php.ini.Локальное значение - это то, что используется в настоящее время.Локальное значение полностью перезаписывает главное значение.

В соответствии с руководством PHP проверяет пути в порядке, указанном в параметре include_path: http://php.net/manual/en/ini.core.php#ini.include-path

...