2010-12-16 10 views
1

私はPHP realpath( './ models')は ""またはnullを返しますか?

realpath('./') 

をしようとすると、私は "D:プロジェクト\くすぐりの\パブリック\" を取得

をしかし、私は

realpath('./models'); // or './models/' 

をしようとしたとき、私は "取得" またはnull。何故ですか?奇妙なことは、私は

realpath('../application/models'); 

をしようとすると、私が得ることです:右である "D \プロジェクト\くすぐり\アプリケーション\モデル"

UPDATE私のディレクトリ構造は以下のようになります

(私は、次のことを試してみて、あなたが万が一falseを取得する場合参照)

/application 
    /models 
    /controllers 
    /views 
    /configs 
    bootstrap.php <-- this is where I am 
+1

現在のディレクトリは 'アプリケーション 'ではありませんか? –

+0

現在のディレクトリは何ですか? – Gumbo

+0

更新を参照してください。私は/application/bootstrap.phpに入っています –

答えて

3

あなたが投稿した出力によると、ディレクトリ構造は次のように見ているようだ:

D:\Projects\Tickle 
    public 
     foo.php 
    application 
     models 

我々はfoo.phpです。 realpath('./models');を使用すると、存在しないD:\Projects\Tickle\public\modelsを参照してください。

UPDATE あなたは(現在のファイルへの相対)ファイルを取得したい場合は、このようなものを使用する必要があります

realpath(__DIR__ . '/models'); 

あるいはさらに良いの(__FILE__は、あなたがしている現在のファイルです) :Zendのフレームワークの使用

realpath(dirname(__FILE__) . '/models') 

APPLICATION_PATH定数(public/index.phpで)realpath(dirname(__FILE__) . '/../application')として定義されます。

+0

'realpath( './')'が公開されている部分が見つかりませんでした!しかし、なぜ?あなたがZend Frameworkに精通しているなら、コードは実際には '/ application/bootstrap.php'にあります。コードはbootstrap.phpを呼び出す/public/index.phpから実行を開始するのでIsit? 'realpath(__ DIR__。/ models ')'を使って 'は動作します。 '__DIR__'は'。/ 'と同じではありませんか? –

+1

@jiewmengブラウザで呼び出したファイルが 'public/index.php'であるため、あなたは公開されています。ブートストラップは単に 'public/index.php'に含まれています、あなたは正しいです。あなたの2つのアプローチの違いは、 '__DIR__'は現在の**ファイル**のディレクトリを返します。 '' realpath( './') 'を使うと定数を使わないので、スクリプトは' public/index.php'(ユーザが呼び出す)を開始として取りますポイント。 Zendを使って作業する場合は、常に 'APPLICATION_PATH'という定数を使うべきです。あなたのモデルディレクトリは' APPLICATION_PATH。 '/ models''。 – Nedec

2

をZend Frameworkのを使用しています:

var_dump(realpath('./models')); 

私は間違っていない場合は、あなたのツリー構造は、として怒鳴る表示され、あなたは、コードの上に持っているファイルが正しい、publicのですか?その場合、実際にはpublic/modelsの実際のパスを取得しようとしています。

public 
    somefile.php 
application 
    models 
+0

はい私は偽になります。ああ、私は 'realpath( './')'が公開されている部分を見逃してしまった!しかし、なぜ?あなたがZend Frameworkに精通しているなら、コードは実際には '/ application/bootstrap.php'にあります。コードはbootstrap.phpを呼び出す/public/index.phpから実行を開始するのでIsit? 'realpath(__ DIR__。/ models ')'を使って 'は動作します。 '__DIR__'は'。/ 'と同じではありませんか? –

関連する問題