2015-04-03 4 views
0

У меня есть проблема, связанная с использованием require_once. Я задаю неправильный путь, и я не могу найти решение.Неправильный путь с использованием require_once

У меня есть файл с именем header.php, который включает в себя два файла с помощью require_once: functions.php и navigation.php. Эта часть работает нормально. Проблема возникает, когда я пытаюсь включить header.php в файл с именем view.php, расположенный в другом каталоге.

вот древовидный:

C:\wamp\www\1.1\plugins\docreader\php\view.php 
C:\wamp\www\1.1\theme\dark-blue\templates\files\header.inc.php 
C:\wamp\www\1.1\theme\dark-blue\templates\files\functions.inc.php 
C:\wamp\www\1.1\theme\dark-blue\templates\files\navigation.inc.php 

Я пробовал много разных пути, но без какого-либо успеха.

У кого-нибудь есть подсказка, пожалуйста?

+1

Вам просто нужно немного ['MAGIC'] (http://php.net/manual/en/language.constants.predefined.php) – Rizier123

+2

так рад, что мои php-дни закончились xD – iamwhitebox

ответ

0

Вам необходимо сделать ваши пути к файлам абсолютными, а не относительными. Полезным супер глобальным для достижения этого является $_SERVER['DOCUMENT_ROOT'], который будет оценивать ваш корневой файл вашего веб-сервера.

+0

спасибо, я буду пытаться . –

1

Прочитайте (и используйте) магическую константу __DIR__ и функцию dirname(), чтобы сгенерировать путь к включенному файлу, начиная с пути включения.

Например, если в plugins\docreader\php\view.php вы хотите включить theme\dark-blue\templates\files\functions.inc.php затем использовать что-то вроде этого:

// Use this in 'plugins\docreader\php\view.php' 
include dirname(dirname(dirname(__DIR__))). 
     '/theme/dark-blue/templates/files/functions.inc.php'; 

__DIR__ является magic constant, который оценивает в каталог, который содержит файл, в котором он используется. В C:\wamp\www\1.1\plugins\docreader\php\view.php значение __DIR__ составляет 'C:\wamp\www\1.1\plugins\docreader\php'.

Функция dirname() возвращает родительский каталог предоставленного пути. Вид .., только лучше. Использование его три раза уменьшает значение, переданное как аргумент (значение __DIR__, описанное выше) до 'C:\wamp\www\1.1'. Все прямо оттуда: добавьте относительный путь к нужному файлу ('/theme/dark-blue/templates/files/functions.inc.php') и забудьте о проблемах включения.

+0

благодарим вас за beiing, что подскажите ответить. –

+0

благодарим вас за beiing, что подскажите ответить. Я попробовал то, что вы предложили, но он не работает. Я думаю, проблема связана с тем, что header.php включает в себя два других файла. header.php - это тот, который я пытаюсь включить в view.php. Я попытался включить двух других в view.php, но проблема все еще существует. –

+0

Примечание: использование неопределенной константы SITE_TEMPLATES_PATH - предполагается «SITE_TEMPLATES_PATH» в C: \ wamp \ www \ 1.1 \ theme \ dark-blue \ templates \ files \ header.inc.php в строке 3 Внимание: require_once (SITE_TEMPLATES_PATH/files/functions.inc.php): не удалось открыть поток: нет такого файла или каталога в C: \ wamp \ www \ 1.1 \ theme \ dark-blue \ templates \ files \ header.inc.php в строке 3 Неустранимая ошибка: require_once(): Не удалось открыть окно «SITE_TEMPLATES_PATH/files/functions.inc.php» (include_path = '; C: \ php \ pear') в папке C: \ wamp \ www \ 1.1 \ theme \ dark-blue \ templates \ files \ header.inc.php в строке 3 –

Смежные вопросы