__FILE__是什么意思?

时间:2009-10-01 20:59:45

标签: php codeigniter path constants

我有来自Codeigniter index.php

的以下代码

我的理解是,

如果/(在这种情况下为CIcore_1_7_1)的字符串位置$system_folderfalse, 如果realpath函数存在且(?)不是false$system_folder已分配给(?)/$system_folder。 其他$system_folder已分配给$system_folder,并将\\替换为/

Q1。 realpath函数意味着什么?

Q2。这是什么意思?

@realpath(dirname(__FILE__))

Q3。我对吗?我有任何误解吗?

Q4。您需要以下哪种情况?

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); 
}

3 个答案:

答案 0 :(得分:43)

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

  2. __FILE__是一个魔术常量,它为您提供当前.php文件的文件系统路径(__FILE__所在的文件系统路径,而不是它包含的文件系统路径。{1}}。

  3. 听起来不错。

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

答案 1 :(得分:10)

__FILE__只是当前文件的名称。 realpath(dirname(__FILE__))获取文件所在目录的名称 - 实质上是安装应用程序的目录。@是PHP非常愚蠢的抑制错误的方法。

答案 2 :(得分:5)

__FILE__
  

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


string dirname  ( string $path  )
     

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


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

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