2014-09-10 2 views
0
структуры

Моего файла здесьполучать путь PHP рабочего каталога

-www 
    -myAppDirectory 
    -init 
     -connect.php 
    -products 
     -api.php 

продуктов/api.php файла будет включать инициализацию/connect.php файл как следующее.

<?php 
include_once("./connect.php"); 

пользователей может позвонить api.php в браузер.

но это дает предупреждение

Warning: include_once(./connect.php): failed to open stream 

Я пытаюсь использовать это:

include_once($_SERVER["DOCUMENT_ROOT"] . "/connect.php"); 

но это дает предупреждение,

Warning: include_once(D:\init\www/connect.php): failed to open stream 

ответ

1

попробовать ../ для вне продукты реж затем добавить path connect.php

include_once("../init/connect.php"); 

вы также можете использовать (не проверено) ./ для корня

include_once("./init/connect.php"); 
1
include_once("./connect.php"); 

будет проверять файл вне родительского каталога, т.е.., Вне продуктов и нет какой-либо файл connect.php вне его. Вы должны использовать

include_once("../init/connect.php"); 
2

Используя абсолютный путь всегда хорошо (чистый и твердый).

include_once(__DIR__ . "/../init/connect.php"); 
+0

Что означает «/../» в пути? – barteloma

+0

"/../" перейти в родительский каталог. –

+0

@bookmarker См. Http://stackoverflow.com/questions/21249525/what-difference-in/21249534#21249534 – xdazz

0

Я стараюсь дать более подробный ответ.

Для начала я хотел бы отметить, что __DIR__ это один из PHP: Magic constants

Он содержит путь к каталогу, в котором выполняется текущий скрипт. В вашем случае что-то похожее на: D:\init\www\myAppDirectory\products без окончания косой черты (на окнах)/back-slash (linux и т. Д.).)

Так, например __FILE__ даст вам D:\init\www\myAppDirectory\products\api.php

Теперь, если вы хотите включить файл с относительно более тесного каталога, я бы предпочел использовать:

include_once("../init/connect.php"); 

(возможно, не требуется, но) также это хорошая практика, чтобы использовать DIRECTORY_SEPARATOR

include_once(".." . DIRECTORY_SEPARATOR . "init". DIRECTORY_SEPARATOR ."connect.php"); 

Вы также можете использовать dirname($path) функции:

$myAppDir = dirname(__DIR__); // D:\init\www\myAppDirectory 
include $myAppDir . DIRECTORY_SEPARATOR . "init". DIRECTORY_SEPARATOR ."connect.php" 

Также include может быть быстрее, чем include_once, потому что последний должен проверить первое за включенных файлов.

Why is require_once so bad to use?

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