__FILE__是什么意思?

shi*_*hin 37 php codeigniter constants path

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

我的理解是,

如果/在字符串中的位置$system_folder(在这种情况下CIcore_1_7_1)是false,如果realpath函数存在AND(?)不false, $system_folder被分配到(?) /$system_folder.其他$system_folder被分配给$system_folder替换\\/.

Q1.realpath函数意味着什么?

Q2.这是什么意思?

@realpath(dirname(__FILE__))
Run Code Online (Sandbox Code Playgroud)

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

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

str_replace("\\", "/", $system_folder)
Run Code Online (Sandbox Code Playgroud)
$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); 
}
Run Code Online (Sandbox Code Playgroud)

Gre*_*reg 48

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

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

  3. 听起来很对.

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

  • 因为\是转义字符 - 将引号放在字符串中你使用"这是\"引用".所以要反斜杠你需要其中两个:"这是\\反斜杠" (5认同)

hob*_*bbs 10

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

  • 不正确,因为 PHP 4.01 `__FILE__` **总是**返回绝对路径。http://php.net/manual/en/language.constants.predefined.php (2认同)

eKe*_*ek0 6

__FILE__
Run Code Online (Sandbox Code Playgroud)

文件的完整路径和文件名.如果在include中使用,则返回包含文件的名称.从PHP 4.0.2开始,FILE总是包含已解析符号链接的绝对路径,而在旧版本中,它在某些情况下包含相对路径.


string dirname  ( string $path  )
Run Code Online (Sandbox Code Playgroud)

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


str_replace("\\", "/", $system_folder)
Run Code Online (Sandbox Code Playgroud)

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