Как узнать, какой путь включения будет использоваться в PHP?

StackOverflow https://stackoverflow.com/questions/2774823

Вопрос

Когда я бегу 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 ищет файлы для включения?

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top