Спасибо за ваше время и внимание.
Я работаю с сайтом php, на котором я хочу добавить гостевую книгу, найденную в сети, которая работает без базы данных mySql.
Мой сайт структурирован так:
host.../myDir/fileA.php (here we have all the basic files of the site)
Первый файл Гостевой книги, который я бы интегрировал, находится здесь:
host.../myDir/gbook/gbook.php
В gbook dir есть еще один каталог, называемый шаблоном, который содержит все необходимое для графики (что очевидно).
Внутри файла A.php я вставил эту команду включения:
require_once "gbook/gbook.php";
А внутри gbook / gbook.php есть эта команда:
$settings['tpl_path'] = './templates/'.$settings['template'].'/';
Теперь я прочитал руководство по php (include (dirname (ФАЙЛ). ‘…’) и я также прочитал ваше многократное объяснение этой команды, поэтому я проверил это:
$settingsBase['tpl_basepath'] = (dirname(__FILE__) . '/');
$settings['tpl_path'] = $settingsBase['tpl_basepath'].'templates/'.$settings['template'].'/';
Но это работает для интеграции, но не для графики.
Так что это то, что я не понимаю, и что я понял.
Когда вы «включаете» файл в другой файл, компилятор считывает код как часть того же файла.
Это проблема. Когда вы включаете что-то, находящееся в другом / dir, компилятор получает файл, но не всю структуру, поэтому, если внутри включаемого файла есть другое «включение», компилятор будет искать его в / dir, где находится файл включения. Правильный?
Значит, существует команда dirname (), верно?
Я имею в виду, правильно ли использовать dirname (), чтобы сообщить компилятору, что я хочу включить этот файл /dir/file.php, и все, что будет после, и оно включено в этот первый файл, должно поддерживать ту же структуру / dir?
Так что, если есть эта структура:
host.../myDir/fileA.php
и этот файл содержит команду:
include gbook/fileB.php
и этот файл содержит команду:
include /template/all_the_other_files.php
и полная структура:
(1) host...
(2) /myDir (where_there's_site)
(3) /gbook (where_there's_base_gbook_structure)
(4) /template (where_there's_template)
(5) /others dir (where_there's_pics_smiles_etc...)
Как я могу сказать компилятору «эй, когда вы включаете gbook / gbook.php», все, что включено в gbook.php, должно быть найдено внутри хоста … / myDir / gbook / …?
Я знаю, что, возможно, это действительно просто для вас, но я пытаюсь преодолеть проблему, и я не могу понять базовое решение и объяснение проблемы.
Спасибо.
Прежде всего, я бы порекомендовал использовать require_once вместо включают. Вызывает ошибку в случае, если нужный файл не найден, и вам не нужно заботиться о нескольких включениях.
Я думаю, вам нужно использовать это только в вашем gbook / fileB.php:
require_once __DIR__ . /template/all_the_other_files.php;
Как видите, вы можете использовать магическую константу DIR в новых версиях PHP вместо dirname (FILE). Используя его, вы можете легко понять, что включает в себя относительные пути. Надеюсь, это поможет.
Других решений пока нет …