PHP dir / файловая иерархия с & quot; включай & quot; и (dirname (__ FILE__). «ЧТО-ТО»)

Спасибо за ваше время и внимание.

Я работаю с сайтом 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 / …?

Я знаю, что, возможно, это действительно просто для вас, но я пытаюсь преодолеть проблему, и я не могу понять базовое решение и объяснение проблемы.

Спасибо.

1

Решение

Прежде всего, я бы порекомендовал использовать require_once вместо включают. Вызывает ошибку в случае, если нужный файл не найден, и вам не нужно заботиться о нескольких включениях.

Я думаю, вам нужно использовать это только в вашем gbook / fileB.php:

require_once __DIR__ . /template/all_the_other_files.php;

Как видите, вы можете использовать магическую константу DIR в новых версиях PHP вместо dirname (FILE). Используя его, вы можете легко понять, что включает в себя относительные пути. Надеюсь, это поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]