AbsolutizeINC();
// Теперь просматриваем пути, начиная с того, по которому была
// найдена какая-нибудь предыдущая загруженная библиотека. Скорее
// всего, там окажется загружаемый сейчас модуль. Если нет —
// что же, просмотрим весь список...
$l=$LastFound;
do {
// В очередном каталоге есть файл модуля?..
$dir=$INC[$LastFound];
if(@is_file($file="$dir/$libname.".LibExt)) {
// Сменить каталог на тот, в котором расположен модуль
$cwd=getcwd();
chdir(dirname($file));
// Делаем доступными для модуля все глобальные переменные
foreach($GLOBALS as $k=>$v) global $$k;
// Включаем файл
$ret=include_once($file);
// Пока не вернулись в предыдущий каталог, перевести
// добавленные (возможно?) пути в $INC в абсолютные
AbsolutizeINC();
// Вернуться
chdir($cwd);
return $ret;
}
$LastFound=($LastFound+1)%count($INC);
} while($LastFound!=$l);
// Ничего не вышло — "умираем"...
die("Couldn't find library \"$libname\" at ".join(", ",$INC)."!");
}
// Корректируем некоторые переменные окружения, которые могут иметь
// неверные значение, если PHP установлен не как модуль Apache
@putenv("SCRIPT_NAME=".
$GLOBALS["HTTP_ENV_VARS"]["SCRIPT_NAME"]=
$GLOBALS["SCRIPT_NAME"]=
ereg_Replace("\\?.*","",getenv("REQUEST_URI"))
);
@putenv("SCRIPT_FILENAME".
$GLOBALS["HTTP_ENV_VARS"]["SCRIPT_FILENAME"]=
$GLOBALS["SCRIPT_FILENAME"]=
Url2Path(getenv("SCRIPT_NAME"))
);
// На всякий случай включаем максимальный контроль ошибок
Error_reporting(1+2+4+8);
// ВНИМАНИЕ! После следующего закрывающего тэга
// не должно быть НИКАКИХ ПРОБЕЛОВ! В противном случае
// сценарий, подключающий библиотекаря, будет выводить в самом
// начале своей работы этот пробел, что недопустимо при