Я следую учебному пособию по созданию файла экземпляра с необходимыми файлами. Это дерево проекта:
а это мой instantiate.php
:
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);
defined('SITE_ROOT') ? null : define('SITE_ROOT', DS.'var'.DS.'www'.DS.'html'.DS.'photo_gallery');
defined('LIB_PATH') ? null : define('LIB_PATH', SITE_ROOT.DS.'includes');
//load config file first
require_once(LIB_PATH.DS."config.php");
//load basic functions next so that everything after can use them
require_once(LIB_PATH.DS."functions.php");
//load core objects
require_once(LIB_PATH.DS."session.php");
require_once(LIB_PATH.DS."database.php");
//load database-related classes
require_once(LIB_PATH.DS."user.php");
В login.php
Я требую инициализировать файл как:
require_once("../../includes/initialize.php");
Но, следуя руководству, я мог бы использовать LIB_PATH
в таких файлах, как database.php
что требует config.php
и на user.php
требующий database.php
,
На данный момент им требуется файл без пути, поскольку они находятся в одном и том же включаемом файле. Однако, если я правильно понял, как работает разделитель каталогов, корень сайта и lib_path, то это улучшит то, что не нужно добавлять разные пути везде, просто добавьте путь через константы. Ну, это не работает! Это отображает это: (сверху вы видите эхо dirname(__FILE__)
в index.php
в общей папке.
Я проверил phpinfo
чтобы увидеть корневой путь … и все кажется в порядке, но не работает, если я пытаюсь использовать это LIB_PATH.DS
,
Последнее, что я прочитал об этом, это некоторые ограничения на ibay, но я попытался провести больше исследований, и я даже не могу найти, что это за «ibay».
Кто-нибудь знает, почему это происходит? Спасибо!
Вы получаете уведомление, потому что у вас есть ошибка в пути для включения вашего файла: вы не получаете initialize.php
файл загружен по сценарию. Если вы действительно хотите, чтобы этот файл был загружен (и вы действительно хотите его, так как ваш код не может обойтись без него), вы должны использовать require
вместо include
, Таким образом, если файл отсутствует, вы получите сообщение об ошибке, и ваш код остановится (смотрите, что остановка — это то, что вам действительно нужно, как если бы у вас не было путей, ваша программа с треском провалилась).
Еще больше, вы должны использовать require_once
, поэтому вы не перегружаете создаваемое приложение: если файл был загружен один раз, он не будет загружен снова.
Вы можете проверить, загружен ли файл, следуя совету этого вопроса: Проверьте, был ли файл включен или загружен
Других решений пока нет …