Zend Framework PHP -> реальный путь()

я пытаюсь создать собственный провайдер Zend Framework и здесь:

    if($module == 'default'){
        $modelsPath = dirname(__FILE__) . '/../application/models';
        $filePath = realpath($modelsPath) . '/' . $name . '.php';
    } else
    if(!$module == ''){
        $modelsPath = dirname(__FILE__) . '/../application/' . $module . '/models';
        $filePath = realpath($modelsPath) . '/' . $name . '.php';
    } else {
        die('Please enter a module!');
    }

когда я пытаюсь создать путь к файлу и когда его модуль по умолчанию все в порядке, но когда напр. модуль - это другое слово, независимо от того, что реальный путь возвращает false ?! где ошибка?


person fre2ak    schedule 13.05.2012    source источник
comment
realpath возвращает false, если путь не существует.   -  person goat    schedule 13.05.2012
comment
Когда realpath() возвращает false, тогда ваш путь (каталог) просто не существует или вы передаете неверный путь.   -  person Adrian World    schedule 13.05.2012
comment
Спасибо! я забыл папку с модулями :]   -  person fre2ak    schedule 13.05.2012


Ответы (3)


Взято из руководства по php:

realpath() возвращает FALSE в случае ошибки, например. если файл не существует.

Примечание.

Запускаемый скрипт должен иметь разрешения на выполнение для всех каталогов в иерархии, иначе realpath() вернет FALSE.

Так что проблема, скорее всего, в правах доступа к папке или просто неверный путь!

person Songo    schedule 13.05.2012

попробуйте использовать константу APPLICATION_PATH.

if($module == 'default'){
        $modelsPath = APPLICATION_PATH . '/models';
        $filePath = realpath($modelsPath) . '/' . $name . '.php';
    } else
    if(!$module == ''){
        $modelsPath = APPLICATION_PATH . '/' . $module . '/models';
        $filePath = realpath($modelsPath) . '/' . $name . '.php';
    } else {
        die('Please enter a module!');
    }
person Shyju O Sivanandan    schedule 14.05.2012

Дважды проверьте, что пути существуют, просто повторив $filePath. Если все в порядке, убедитесь, что «пользователь» (например, apache, www-data) имеет достаточные привилегии. Если вы не уверены, кто работает на вашем сервере, вы можете просто выполнить отладку, повторив whoami

person Lloyd Moore    schedule 14.05.2012