Не работает ini_set (include_path)

kseen

Новичок
Не работает ini_set (include_path)

Здравствуйте.
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));
Использую такой код, чтобы изменить include_path. Под Windows все прекрасно работает, но когда переношу на сервер FreeBSD код не работает. Не изменяется include_path: делаю print_r(get_include_path()) перед ini_set() и после и не вижу разницы. В чём может быть проблема? Я посмотрел php_info() safe_mode не работает, в список запрещённых функций также не входит.
 

kode

never knows best
Re: Не работает ini_set (include_path)

Автор оригинала: kseen
Здравствуйте.
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));
Использую такой код, чтобы изменить include_path. Под Windows все прекрасно работает, но когда переношу на сервер FreeBSD код не работает. Не изменяется include_path: делаю print_r(get_include_path()) перед ini_set() и после и не вижу разницы. В чём может быть проблема? Я посмотрел php_info() safe_mode не работает, в список запрещённых функций также не входит.
Есть замечательные константы:
DIRECTORY_SEPARATOR и PATH_SEPARATOR

http://ru2.php.net/manual/ru/ref.dir.php

и ещё:

PHP:
(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')?
заменить на

PHP:
define("WINDOWS",(substr_count(strtoupper(PHP_OS),"WIN"))?1:0);
.....
define("DELIMITER", (WINDOWS)?";":":");
Но это тебе не понадобится
 

kseen

Новичок
Re: Re: Не работает ini_set (include_path)

Автор оригинала: kode
Есть замечательные константы:
DIRECTORY_SEPARATOR и PATH_SEPARATOR

http://ru2.php.net/manual/ru/ref.dir.php

и ещё:

PHP:
(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')?
заменить на

PHP:
define("WINDOWS",(substr_count(strtoupper(PHP_OS),"WIN"))?1:0);
.....
define("DELIMITER", (WINDOWS)?";":":");
Но это тебе не понадобится
Спасибо, буду иметь в виду...
 
Сверху