PHP realpath('./ models')返回“”或null?

时间:2010-12-16 13:32:49

标签: php realpath

当我尝试

realpath('./')

我得到“D:\ Projects \ Tickle \ public”

但是当我尝试

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

我得到“”或null。这是为什么?奇怪的是,当我尝试

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

我得到“D:\ Projects \ Tickle \ application \ models”,这是正确的

更新

我的目录结构如下所示(我正在使用Zend Framework)

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

2 个答案:

答案 0 :(得分:3)

根据您发布的输出,您的目录结构看起来像这样:

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

我们在foo.php。使用realpath('./models');,您可以参考不存在的D:\Projects\Tickle\public\models

<强>更新 如果你想获得一个文件(相对于当前文件),你应该使用这样的东西:

realpath(__DIR__ . '/models');

甚至更好(__FILE__是您当前的文件):

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

使用Zend Framework,APPLICATION_PATH常量定义为realpath(dirname(__FILE__) . '/../application')(在public/index.php中)。

答案 1 :(得分:2)

请尝试以下操作,看看是否有机会获得false

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

如果我没弄错,你的树结构如下所示,上面编码的文件是public,对吗?在这种情况下,您实际上是在尝试获得public/models的实际路径。

public
    somefile.php
application
    models