kseen
Новичок
Не работает ini_set (include_path)
Здравствуйте.
Использую такой код, чтобы изменить include_path. Под Windows все прекрасно работает, но когда переношу на сервер FreeBSD код не работает. Не изменяется include_path: делаю print_r(get_include_path()) перед ini_set() и после и не вижу разницы. В чём может быть проблема? Я посмотрел php_info() safe_mode не работает, в список запрещённых функций также не входит.
Здравствуйте.
PHP:
define("DELIMITER", (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')? ";" : ":");
$includePath = explode(DELIMITER, get_include_path());
define("PATHSEPARATOR", (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')? "\\" : "/");
$myPath = explode(PATHSEPARATOR, dirname(__FILE__));
array_pop($myPath);
$selfPath = join(PATHSEPARATOR, $myPath);
$includePath[] = $selfPath;
// Set all moodules paths are included paths
$dir = opendir($selfPath);
while ($dirContent = readdir($dir)) {
if ((is_dir($selfPath . PATHSEPARATOR . $dirContent)) && (($dirContent == 'lib') || ($dirContent == 'classes'))) {
$subdir = opendir($selfPath . PATHSEPARATOR . $dirContent);
while ($subdirContent = readdir($subdir)) {
if ((is_dir($selfPath . PATHSEPARATOR . $dirContent . PATHSEPARATOR . $subdirContent)) && (($subdirContent != '.') && ($subdirContent != '..'))) {
$includePath[] = $selfPath . PATHSEPARATOR . $dirContent . PATHSEPARATOR . $subdirContent;
}
}
}
}
define("ROOT_TEMPLATES", dirname(__FILE__) . PATHSEPARATOR);
$pathPieces = explode(PATHSEPARATOR, dirname(__FILE__));
array_pop($pathPieces);
define("DOCROOT", join(PATHSEPARATOR, $pathPieces) . PATHSEPARATOR);
define("MYENV", strtoupper(substr(PHP_OS, 0, 3)));
$includePath[] = DOCROOT . PATHSEPARATOR . "mod";
$includePath[] = $_SERVER["DOCUMENT_ROOT"];
ini_set("include_path", join(DELIMITER, $includePath));