【问题标题】:PHP realpath('./models') returns "" or null?PHP realpath('./models') 返回 "" 还是 null?
【发布时间】:2010-12-16 13:32:48
【问题描述】:

当我尝试时

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

【问题讨论】:

  • 你当前的目录不是applications一个吗?
  • 你的当前目录是什么?
  • 查看更新。我在 /application/bootstrap.php

标签: php realpath


【解决方案1】:

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

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 框架,APPLICATION_PATH 常量定义为 realpath(dirname(__FILE__) . '/../application')(在 public/index.php 中)。

【讨论】:

  • 我错过了realpath('./') 公开的部分!但为什么?如果您熟悉 Zend Framework,代码实际上在 /application/bootstrap.php 中。是因为代码从调用 bootstrap.php 的 /public/index.php 开始运行吗?使用realpath(__DIR__ . '/models') 有效。 __DIR__./ 不一样吗?
  • @jiewmeng 你是公开的,因为你在浏览器中调用的文件是public/index.php。引导程序刚刚包含在public/index.php 中,你是对的。您的两种方法之间的区别是:__DIR__ 返回当前文件 的目录。 (它是一个常量 - 每个包含的文件都不同!)当您使用realpath('./') 时,您不使用该常量,脚本以public/index.php(由用户调用)作为起点。使用 Zend,您应该始终使用常量 APPLICATION_PATH,您的模型目录将是:APPLICATION_PATH . '/models'
【解决方案2】:

尝试关注,看看是否有机会获得false

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

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

public
    somefile.php
application
    models

【讨论】:

  • 是的,我弄错了。哦,我错过了realpath('./') 公开的部分!但为什么?如果您熟悉 Zend Framework,代码实际上在 /application/bootstrap.php 中。是因为代码从调用 bootstrap.php 的 /public/index.php 开始运行吗?使用realpath(__DIR__ . '/models') 可以。 __DIR__./ 不一样吗?
猜你喜欢
  • 2016-01-17
  • 2016-01-03
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 2011-12-15
  • 1970-01-01
相关资源
最近更新 更多