Как узнать, какой путь включения будет использоваться в PHP?
-
03-10-2019 - |
Вопрос
Когда я бегу 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