__FILE__ 是啥意思?

Posted

技术标签:

【中文标题】__FILE__ 是啥意思?【英文标题】:What does __FILE__ mean?__FILE__ 是什么意思? 【发布时间】:2010-12-03 03:35:49 【问题描述】:

我有来自 Codeigniter index.php 的以下代码

我的理解是,

如果$system_folder(在本例中为CIcore_1_7_1)中字符串位置的/false, 如果realpath 函数存在并且(?)不是false$system_folder 分配给 (?) /$system_folder。 否则将$system_folder 分配给$system_folder,并将\\ 替换为/

第一季度。 realpath函数是什么意思?

第二季度。这是什么意思?

@realpath(dirname(__FILE__))

第三季度。我对吗?我有什么误会吗?

第四季度。你需要以下什么样的情况?

str_replace("\\", "/", $system_folder)

$system_folder = "CIcore_1_7_1";

/*
|---------------------------------------------------------------
| SET THE SERVER PATH
|---------------------------------------------------------------
|
| Let's attempt to determine the full-server path to the "system"
| folder in order to reduce the possibility of path problems.
| Note: We only attempt this if the user hasn't specified a 
| full server path.
|
*/

if (strpos($system_folder, '/') === FALSE)

    if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE)
    
        $system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;
    

else

    // Swap directory separators to Unix style for consistency
    $system_folder = str_replace("\\", "/", $system_folder); 

【问题讨论】:

【参考方案1】:

__FILE__ 只是当前文件的名称。 realpath(dirname(__FILE__)) 获取文件所在目录的名称——本质上是安装应用程序的目录。@ 是 PHP 抑制错误的极其愚蠢的方式。

【讨论】:

完美的解释。谢谢。 不正确,因为 PHP 4.01 __FILE__ 总是 返回绝对路径。 php.net/manual/en/language.constants.predefined.php 非常感谢您,然后我可以使用此常量获取文件所在的目录?例如这样的: $system_folder = realpath(dirname(FILE)).'/'.$system_folder;回声 $system_folder;【参考方案2】:
__FILE__

完整路径和文件名 文件。如果在包含内使用,则 返回包含文件的名称。 自 PHP 4.0.2 起,FILE 总是 包含一个绝对路径 符号链接在旧版本中已解决 它包含相对路径的版本 在某些情况下。


string dirname  ( string $path  )

给定一个包含文件路径的字符串,此函数将返回 目录的名称。


str_replace("\\", "/", $system_folder)

您需要在不同操作系统之间的路径分隔符中保持一致。 Windows 使用 \ 而 *nix 使用 /,你使用 /。

【讨论】:

如果我想在 php 中屏蔽这个功能我应该怎么做? @simon 阻塞是什么意思?【参考方案3】:

    realpath() 函数为您提供文件系统路径,并解析了任何符号链接和目录遍历(例如 ../../)。 dirname() 函数只为您提供目录,而不是其中的文件。

    __FILE__ 是一个神奇的常量,它为您提供当前 .php 文件的文件系统路径(__FILE__ 所在的那个,而不是它所包含的那个,如果它是一个包含的话。

    听起来不错。

    这是从 Windows 样式 (\) 路径转换为 ​​Unix 样式 (/)。

【讨论】:

为什么有两个\s,而不是一个\? 因为 \ 是转义字符 - 将引号放在字符串中,您使用“this is \” a quote”。所以要放置反斜杠,您需要其中两个:“this is \\ a反斜杠” 优秀的答案,但我有一个问题,我可以在 PHP 中使用这个常量

以上是关于__FILE__ 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)) 是啥意思? Python

thinkphp 中两个下划线是啥意思?

python中的iterable是啥意思

“typedef __u16 __bitwise __le16;”是啥意思?在Linux内核中是啥意思?

PHP中的ABSPATH是啥意思?

这个 Python 代码是啥意思?