PHP Относительные пути, такие как ASP - PullRequest
0 голосов
/ 09 февраля 2012

Это работает

<?php include("inc/c.php")?>

Но в папке за этим это не работает

<?php include("../inc/c.php")?>

Я должен сделать

<?php include("/var/web/public_html/etc/inc/c.php")?>

Я знаю вASP вы можете включить виртуальные пути и каталоги.Это то же самое с PHP?

Ответы [ 5 ]

2 голосов
/ 09 февраля 2012

Если вы включаете файл из папки, все включения относятся к файлу включающего файла.

Следовательно, тот же код должен работать для файла в подпапке:

<?php include("inc/c.php")?>
1 голос
/ 09 февраля 2012

Вы можете использовать realpath(dirname(__FILE__)) для включения файлов относительно текущего файла:

include(realpath(dirname(__FILE__).'/../inc/c.php')); 
0 голосов
/ 09 февраля 2012

Но в этой папке это не работает

Нет, работает .

Я знаю, что в ASP вы можете включить виртуальные пути и каталоги. Это то же самое с PHP?

Да. Но весь виртуальный путь не имеет ничего общего с вашим делом.

Это не проблема PHP. Это проблема разработчика, который использует неправильный путь.

Чтобы сделать ваш код защищенным от ошибок, всегда используйте абсолютные пути. Пути сборки не из текущего местоположения, а из корня сайта. Так что на ЛЮБОЙ странице вашего сайта все будет так же.
Наиболее общий способ будет

include $_SERVER['DOCUMENT_ROOT']."/etc/inc/c.php";
0 голосов
/ 09 февраля 2012

использование

dirname(__file__)

вернет вам путь к текущему каталогу.

0 голосов
/ 09 февраля 2012

Вы можете добавить каталоги в каталог include_path PHP. Когда вы указываете относительное имя файла, PHP будет искать этот файл относительно всех каталогов, указанных в include_path.

Взгляните на http://php.net/manual/en/function.set-include-path.php#example-488.

...