PHP - require_once: не удалось открыть поток: нет такого файла или каталога - PullRequest
0 голосов
/ 18 декабря 2010

Мне не удается открыть этот файл в php:

Моя структура папок выглядит следующим образом:

/home/www/site/user/index.php

/home/www/site/lib/login.inc.php

Я пытаюсь открыть файл login.inc.php впользовательский файл index.php:

if (!defined('SITE_ROOT') || !defined('USER_ROOT') )
{
    define('SITE_ROOT', '../');
    define('USER_ROOT', './');
}

require_once SITE_ROOT . 'lib/login.inc.php';

Но при этом возникает ошибка с невозможностью открыть поток.

1 Ответ

0 голосов
/ 18 декабря 2010

require_once разрешает относительные каталоги по отношению к рабочему каталогу . Когда веб-сервер выполняет PHP-скрипт в ответ на HTTP-запрос, рабочим каталогом является каталог этого PHP-скрипта. Когда этот PHP-скрипт включает в себя какой-либо другой PHP-скрипт, другой PHP-скрипт все еще имеет исходный каталог, установленный как рабочий каталог.

Это означает, что не имеет значения, где включенный файл расположен относительно включаемого файла. Чтобы компенсировать это, вы можете использовать абсолютные пути в include-операторе. В /home/www/site/user/index.php сделайте

require_once dirname(__FILE__) . '/../lib/login.inc.php'
...