У меня возникают проблемы с назначением относительного пути к require_once. Я уверен, что это просто, что я не вижу …
структура каталогов папок уровня 1: уровень сайта 2: включает уровень 2: класс
поэтому … site / include / global.php <- здесь вызывается функция autoload с сайта / class / db.php
когда я пытаюсь использовать
function__autoload($className) { require_once '../class/'.$className.'.php'; }
я получил:
Предупреждение: require_once (../ class / db.php) [function.require-once]: не удалось открыть поток: нет такого файла или каталога
Неустранимая ошибка: require_once () [function.require]: Не удалось открыть окно «../class/db.php» (include_path = '.; ./ includes; ./pear').
Что я делаю не так? Это будет нормально работать, если я буду использовать global.php в папке класса, поэтому я предполагаю, что это плохое понимание относительных путей, вызывающих проблему.
благодаря
require(_once)
и include(_once)
работу относительно пути первого скрипта, то есть сценария, который был фактически вызван .
Если вам нужно что-то require
во включенном или требуемом файле и хотите работать относительно этого файла, используйте
dirname(__FILE__)."/path/to/file";
или как @Arkh указывает, начиная с PHP 5.3 вверх
__DIR__."/path/to/file";
Это работает (только apache, я считаю )
require_once($_SERVER['DOCUMENT_ROOT'] . '/class/' . $classname '.php');