2014-02-18 2 views
1

В настоящее время я пытаюсь загрузить include файл PHP из другого каталога.include file (s) из другого каталога

public_html/a/class/test.php <-- from this file i would to include a file from 
public_html/b/common.php <-- wanted to include this file 

Не уверен, что я должен делать, потому что я попытался с помощью

dirname(__FILE__) 

и это держит на возвращение public_html/a/ для меня вместо этого.

Я пытался что-то вроде этого

dirname(__FILE__).'/../b/common.php' 

, но это не поможет мне в получении мой файл.

+2

'__ (имя папки FILE __)' должен быть 'public_html/а/class', и если да, то вам нужно будет' __ (имя-каталога FILE__). '/../../ b/common.php'' –

+0

, похоже, работает .. но интересно, что делает /../? – user1897151

+1

FYI '__DIR__ === dirname (__ FILE __)' – Phil

ответ

0
include('../../b/common.php'); 

будет содержать файл для вас, убедитесь, что оба каталога имеют такую ​​же группу пользователей, что и пользователь.

3

Вы можете просто продолжать двигаться вверх по дереву каталогов до тех пор, пока у вас есть общий предок:

require dirname(dirname(__DIR__)) . '/b/common.php'; 

Магическая константа __DIR__ приравнивает dirname(__FILE__), и были введены в 5.3. Каждое использование dirname() возвращается один каталог, т.е .:

dirname('public_html/a/class'); // public_html/a 
dirname('public_html/a'); // public_html 

Btw, редакторы, такие как PhpStorm также понимают это использование относительных путей.

+2

Я бы посоветовал * никогда * полагаться на 'DOCUMENT_ROOT'. Во-первых, он не установлен в не-веб-контексте (CLI, cron jobs и т. Д.). Во-вторых, если приложение перемещено в подкаталог, все пути становятся неправильными.Использование относительного пути от '__DIR__' лучше всего – Phil

+0

@Phil Достаточно справедливо, удалено :) –

0

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

// This should be on any root directory file 
define("PR_BASEPATH", dirname(__FILE__)); 

И согласно вашей реализации, Предположим, вы находитесь в

public_html/a/class/test.php 

и dirname(__FILE__) возвращает имя директории текущего файла, который всегда возвращает каталог class согласно test.php файла.

И вы хотите включить public_html/b/common.php, который находится в другом каталоге /b. Поэтому сначала нужно получить корневой каталог документа.

include $_SERVER['DOCUMENT_ROOT'] . "/b/common.php"; 

Посмотрите на $_SERVER['DOCUMENT_ROOT']

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