2009-10-01 82 views
27

我从笨下面的代码index.php__FILE__是什么意思?

我的理解是,

如果在$system_folder字符串的位置(在这种情况下CIcore_1_7_1)为false, 如果realpath函数存在和/(?)是不是false, $system_folder被分配给(?)/$system_folder。 否则$system_folder被分配给$system_folder,用/代替\\

Q1。 realpath函数的含义是什么? Q2302。这是什么意思?

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

回答

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

  2. __FILE__是一个神奇的恒定,让你的文件系统路径到当前的PHP文件(就是那个__FILE__是,不是它的,如果它包括一个一个包含。

  3. 听起来是正确的。

  4. 这是从Windows风格转换(\)路径为Unix类型(/)。

+0

为什么有两个\ s,而不是一个\? – shin 2009-10-02 10:03:04

+1

因为\是转义字符 - 在一个字符串中加上一个引号,所以你可以使用“this is \”一个引号“,所以要放一个反斜线,你需要两个:”这是一个反斜杠“ – Greg 2009-10-02 10:06:02

8

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

+1

完美的解释。谢谢。 – Jonny 2014-04-01 18:28:21

+0

不正确的,因为PHP 4.01'__FILE__' **一路线**返回绝对路径。 http://php.net/manual/en/language.constants.predefined.php – iantonuk 2017-11-12 04:37:50

5
__FILE__ 

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


string dirname (string $path ) 

给出一个包含有指向一个文件的全路径的字符串,该函数将返回 目录的名称。


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

你需要用它来在不同的操作系统之间的路径分隔符来consisten。 Windows使用\和* nix使用/,你使用/。