0

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

ファイルへのパスを作成しようとしているとき、そのデフォルトモジュールはすべて問題ありませんが、ex. モジュールは、実際のパスが false を返すものに関係なく、別の言葉ですか?! エラーはどこですか?

4

3 に答える 3

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!');
    }
于 2012-05-14T01:26:14.037 に答える
0

PHPマニュアルからの抜粋:

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

ノート:

実行中のスクリプトには、階層内のすべてのディレクトリに対する実行権限が必要です。そうでない場合、realpath() は FALSE を返します。

したがって、問題はおそらくフォルダーのアクセス許可にあるか、パスが単に間違っている可能性があります!

于 2012-05-13T19:38:51.840 に答える
0

$filePath を単純にエコーして、パスが存在することを再確認します。これで問題ないと判断された場合は、「ユーザー」(apache、www-data など) に十分な権限があることを確認してください。誰がサーバーを操作しているのかわからない場合は、エコーするだけで簡単にデバッグできますwhoami

于 2012-05-14T15:02:58.150 に答える