Для хранения URL, работающих в управляемых версией проектах, я использовал $ _SERVER ['DOCUMENT_ROOT']. Проблема, я разрабатываю проекты в папке, таким образом, я получаю это:
$ _SERVER ['DOCUMENT_ROOT']. '/folder/path/to/file.php'
Когда я иду живой, я обычно просто хочу следующее:
$ _SERVER ['DOCUMENT_ROOT']. '/path/to/file.php'
Я знаю, что существуют большие проблемы в мире, чем необходимость удалить и добавить это имя папки, но есть ли способ, которым я могу легко автоматизировать это? Я могу так или иначе установить свой корень документа локально для включения папки, в которой я работаю? У меня есть фундаментальное неверное толкование способа, которым работают вещи? Довольно новый в этом материале, и надеющийся изучать как можно больше и действительно grok, "почему".
Большое спасибо!
Вместо использования $ _ SERVER [' DOCUMENT_ROOT ']
, почему бы не объявить константу, которая всегда содержит корень вашего веб-приложения?
<?php
define('ABSPATH', dirname(__FILE__));
Поместите следующий код в файл, расположенный в корневой папке вашего приложения, и включите его при каждой загрузке страницы.
Тогда вы всегда можете просто сделать $ path = ABSPATH. '/ путь / к / файлу.php ';
независимо от того, находится ли ваша локальная копия в подкаталоге , папке
или нет.
Если в вашем приложении уже есть файл, который включается при каждой загрузке страницы, вы можете просто поместить приведенный выше код в этот файл, и он будет работать.
Обратите внимание, что вам может потребоваться добавить дополнительные вызовы dirname ()
в зависимости от того, где находится этот файл. Добавьте по одному для каждого каталога, который вы переходите из корня вашего веб-приложения.
Например, если ваше веб-приложение находится в / webapp /
, а ваше «глобальное включение» находится в /webapp/includes/framework/init.php
, то указанное выше код необходимо изменить как таковой:
define('ABSPATH', dirname(dirname(dirname(__FILE__))));
то есть: 2 дополнительных вызова dirname ()
из-за двух дополнительных папок из корня webapp ( includes / framework
)
Пояснение
Приведенный выше код предназначен для размещения в одном файле и только в одном файле в вашем веб-приложении. Этот файл необходимо включать при каждой загрузке страницы.
Если у вас уже есть файл, который включен перед любой обработкой (например, файл конфигурации или другой), вы можете скопировать и вставить этот код в этот файл.
Количество вызовов dirname ()
зависит от того, насколько глубоко файл, в который вы скопировали и вставили код
, находится относительно корневого каталога вашего веб-приложения. Для приведенных выше примеров предположим, что корень вашего веб-приложения представлен как ~
.
Если вы скопируете мой код в ~ / abspath.php
, то вам понадобится один вызов dirname ()
.
Если вы скопируете мой код в ~ / includes / abspath.php
, то вам понадобятся два вызова dirname ()
.
Если вы скопируете мой код в ~ / includes / config / abspath.php
, то вам потребуются три вызова dirname ()
. Теперь давайте просто скажем, что это его последнее местоположение.
В ~ / index.php
вы делаете следующее:
<?php
require_once('includes/config/abspath.php');
и получаете доступ к ABSPATH
.
В ~ / dir / someOtherPage.php
вы делаете следующее:
<?php
require_once('../includes/config/abspath.php');
и получаете доступ к ABSPATH
.
Вот почему я говорю, что если у вас уже есть файл, который включается при каждой загрузке страницы, проще просто вставить в него приведенный выше код. Просто убедитесь, что вы изменили количество вызовов dirname ()
соответственно. Опять же, этот код должен находиться ТОЛЬКО В ОДНОМ ФАЙЛЕ.