не может включать ("absolute_path") - PullRequest
0 голосов
/ 13 февраля 2011

Я не могу понять, почему это не сработает.

$docRoot = getenv("DOCUMENT_ROOT");
include_once($docRoot."/conn/connection.php");
include_once($docRoot."/auth/user.php");

Он работает локально через wamp, но не работает на моем живом сервере. Я попробовал это:

if(!include_once($docRoot."/auth/user.php")){

   session_start();
   $debug = array();
   $debug["docRoot"] = $docRoot;
   $debug["inc_path"] = $docRoot."/auth/user.php";
   $debug["file_exists"] = file_exists($debug["inc_path"]);
   $_SESSION['DEBUG'] = $debug;

   // exit
   header("Location:debug.php"); 
   exit(); 
}

Страница отладки просто отображает этот массив и показывает правильные абсолютные пути и указывает, что файл действительно существует. Так почему же не работает include_once ()? Сервер (учетная запись DV на сервере MediaTemple) не был настроен вообще, поэтому мне интересно, есть ли какая-то настройка apache или php, которая мне мешает.

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

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

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

Кстати, проблемным включением было отсутствие начального слеша в пути к файлу (include ("dir / file.ext");), который работает на моей локальной установке wamp и прерывается на сервере linux.

0 голосов
/ 13 февраля 2011

В вашей отладке вы можете попробовать is_readable($docRoot."/conn/connection.php"). Функция file_exists вернет true, даже если у файла нет прав на чтение.

Если вы получите код ошибки, мы сможем предоставить больше информации о том, что происходит не так.

...