【问题标题】:WAMP showing absolute path when echoing dirname(__FILE__)WAMP 在回显 dirname(__FILE__) 时显示绝对路径
【发布时间】:2013-02-12 00:25:49
【问题描述】:

我这样做了:

echo dirname(____FILE____) 

它一直显示为完整的绝对路径

C:/Program Files (x86)/VertrigoServ/www/dir/file.php

这是为什么呢?我希望它会显示

dir/file.php

我正在使用 WAMP,它是 Windows 上的 Apache。

顺便说一句,调用$_SERVER['DOCUMENT_ROOT'] 做同样的事情 - 它显示完整路径。

【问题讨论】:

  • PHP 文档说:“文件的完整路径和文件名。如果在包含中使用,则返回包含文件的名称。从 PHP 4.0.2 开始,FILE 始终包含解析符号链接的绝对路径,而在旧版本中,它在某些情况下包含相对路径”。除了文件路径之外,您为什么会期望其他任何内容?
  • 你是在获取webroot中脚本的相对路径吗?
  • 是相对于根目录的路径。

标签: php apache path


【解决方案1】:

试试:

$webPath = str_replace($_SERVER['DOCUMENT_ROOT'], '', str_replace('\\', '/', __FILE__));

它将采用文件的绝对路径并删除它的文档根部分,这应该为您留下来自文档根的路径和文件的绝对路径。

【讨论】:

  • $_SERVER['DOCUMENT_ROOT'] 用 / 返回一个位置,__FILE__ 用 \ 返回它,因此根本没有替换任何东西(在 windows 下测试)
  • 您可以在 doc 根目录上执行 str_replace('/', DIRECTORY_SEPARATOR, $_SERVER['DOCUMENT_ROOT']) 以在 Windows 上解决此问题。
【解决方案2】:

虽然您没有说明,但如果您使用的是 wordpress,我通过以下方式解决了这个问题:

file(bloginfo('home_url').'<path-to-file-without-leading-slash>')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多