2012-05-13 3 views
0

им пытаются создать Zend Framework пользовательского поставщика и здесь:Zend Framework PHP -> Realpath()

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!'); 
    } 

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

+0

realpath возвращает false, если путь не существует. – goat

+0

Когда realpath() возвращает false, довольно просто ваш путь (каталог) не существует или вы передаете неправильный путь. –

+0

спасибо! я забыл папку с модулями:] – fre2ak

ответ

0

Взятые из php manual:

Realpath() возвращает FALSE, в случае неудачи, например, если файл не существует.

Примечание:

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

Так что проблема, скорее всего, связана с разрешением папки или просто неправильным путем!

2

попробуйте использовать 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!'); 
    } 
0

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