Если вам необходимо определить базовый путь для набора сценариев, вы не должны полагаться на «текущий рабочий каталог». Это может измениться от исполняющей среды к исполняющей среде.
Вместо этого основывайте его на известном пути.
/includes/class_bootstrap.php
знает , что это будет один каталог по сравнению с базовым путем, поэтому он может сделать это:
define('CWD', realpath(dirname(__FILE__) . '/../') );
dirname
возвращает имя каталога, указанное в переданной строке. Если __FILE__
вернет C:/wamp/www/vb4/plugins/includes/class_bootstrap.php
, то dirname
вернет C:/wamp/www/vb4/plugins/includes
. Затем мы добавляем /../
к нему и затем вызываем realpath
, что превращает этот относительный ..
в реальный каталог: C:/wamp/www/vb4/plugins
Уф.
С этого момента, CWD
будет работать так, как вы ожидаете. Вы можете require_once CWD . '/includes/init.php'
, и он будет правильно разрешать до C:/wamp/www/vb4/plugins/includes/init.php
Кроме того, это может звучать глупо, но «vb4» может относиться к vBulletin 4, и в этом случае ваш плагин может уже имеет доступ к информации о конфигурации, которую он предоставляет, включая такие полезные вещи, как пути. Это может сделать все это упражнение ненужным. Я намеренно ничего не знаю о vB, иначе я бы указал вам на их документы для разработчиков.