Как найти родительский каталог в PHP? - PullRequest
2 голосов
/ 08 марта 2011

У меня есть этот код в HTML, который отлично работает:

<link href="/mywebsite/styles.css" rel="stylesheet" type="text/css"/>

Однако этот код в PHP не:

require('/mywebsite/db.php');

И db.php, и styles.css находятся втот же каталог.Я могу использовать:

require(dirname(__DIR__) . '/db.php');

Но это кажется довольно уродливым.Я что-то упускаю из виду?

Ответы [ 3 ]

2 голосов
/ 08 марта 2011

Я что-то упускаю из виду?

Да.:)

require('/mywebsite/db.php');

/ - это системный корень (C:\, если вы парень из Windows).Он не относится к URL-адресу вашего сайта, а связан с системой, на которой работает сайт.Я предполагаю, что ваш сайт сохраняется где-то вроде /users/aygosis/webroot/index.php./mywebsite/db.php, вероятно, не существует в вашей системе.

require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'db.php'

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

define('ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);

...

require ROOT . 'db.php';
1 голос
/ 08 марта 2011

Общий метод здесь - это определить некоторые константы, связанные с файловой системой, а затем использовать их, то есть в моей маленькой домашней среде MVC, я определяю следующее:

if (!defined('DS')) {
    /**
     * Shorter Directory Separator Constant
     */
    define('DS', DIRECTORY_SEPARATOR);
}

if (!defined('ROOT')) {
    /**
     * Application Directory path Constant
     */
    define('ROOT', dirname(dirname(__FILE__)));
}

Затем я обращаюсь к таким файлам:

require ROOT . DS . 'System' . DS . 'Library' . DS . 'compatibility.php';
0 голосов
/ 08 марта 2011

В вашем файле конфигурации php.ini добавьте расположение файлов вашего сайта в include_path.Таким образом, он будет искать этот каталог, когда вы вызываете include () или require ()

...