2009-08-23 33 views

回答

13
print $_SERVER["SCRIPT_FILENAME"]; 
+3

这不是正确的答案... – Neo 2014-01-14 02:52:44

+1

只适用于Web容器的上下文。 – 2014-10-27 17:30:55

1

我不认为你可以这样做:__FILE__魔常数表示写入哪个文件;这就是全部。

如果你想知道哪些PHP脚本最初被称为(被请求该URL,例如),你可能有更多的运气看$_SERVER超全局:它包含了许多信息,包括一些会帮助你(如例如SCRIPT_FILENAMESCRIPT_NAME ;-)

17

所选答案仅适用于设置服务器变量的环境,并且特别是不能在CLI脚本中工作。此外,它不确定父级,但只确定最顶级的脚本文件。

通过查看$ argv [0],您可以从CLI脚本执行几乎相同的操作,但不能提供完整路径。

环境无关的解决方案使用debug_backtrace

function get_topmost_script() { 
    $backtrace = debug_backtrace(
     defined("DEBUG_BACKTRACE_IGNORE_ARGS") 
     ? DEBUG_BACKTRACE_IGNORE_ARGS 
     : FALSE); 
    $top_frame = array_pop($backtrace); 
    return $top_frame['file']; 
} 
+1

可能在这里必须是“array_shift”而不是“array_pop” – FDisk 2013-02-20 09:31:42

+0

否则,使用'array_shift()'将导致函数返回包含'get_topmost_script()'的脚本文件的名称,即'__FILE__'。 – danorton 2013-02-23 04:32:52

0

直到解决方案:

父脚本:

echo $_SERVER['SCRIPT_FILENAME']; 

儿童脚本(父脚本包含文件):

echo __FILE__; 

建立一个叫做 “parent.php” 文件,其内容:

include('child.php'); 

建立一个叫做 “child.php” 文件,其内容:

echo "My Parent is at: " . $_SERVER['SCRIPT_FILENAME'] . "<br>"; 
echo "I'm at: " . __FILE__; 

你得到这个想法...

0

你必须使用basename($_SERVER["SCRIPT_FILENAME"])或if你只喜欢剧本nam,你可以使用basename($_SERVER["SCRIPT_FILENAME"], '.php')