2012-05-13 6 views
0

Zend Frameworkのカスタムプロバイダを作成しようとしているIMと: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!'); 
    } 

私は、ファイルへのパスを作成しようとそのデフォルトモジュールのすべてが、okですイムしかし、元の場合。モジュールはrealpathが偽を返すかどうかにかかわらず、他の言葉ですか?エラーはどこですか? php manualの取り出し

+0

realpathは、パスが存在しない場合はfalseを返します。 – goat

+0

realpath()がfalseを返した場合、あなたのパス(ディレクトリ)が存在しないか、間違ったパスを渡すだけです。 –

+0

ありがとうございます!私はモジュールフォルダを忘れていた:] – fre2ak

答えて

0

のrealpath()は、例えば、失敗した場合にFALSEを返しますファイルが存在しない場合

注:

実行中のスクリプトはFALSEを返します)(それ以外のrealpath、階層内のすべてのディレクトリに実行権限を持っている必要があります。

したがって、おそらく問題はフォルダのアクセス許可であるか、パスは間違っています。

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