在执行包含库的脚本时,我想从库中找到调用者脚本,在Perl中,我使用env:$0,它为调用方脚本提供了路径。在PHP中,__FILE__给出了当前脚本,所以在库中它给我的是库路径,而不是调用方脚本路径。
从perl文档:$0包含包含正在执行的Perl脚本的文件名。
我认为可以使用debug_backtrace()来完成,但是还有另一种更好/更短的方法吗?
编辑:(添加示例代码)
文件: index.php
<?php
require 'locallib.php';
echo 'in original script = '.__FILE__.'<br />';
?>文件: locallib.php
<?php
require "lib.php";
echo 'in library "'.__FILE__.'"<br />';
?>文件: lib.php
<?php
if( $_SERVER['SCRIPT_FILENAME'] != '/var/www/html/index.php')
{
echo "Not allowed";exit;
} else
{
echo 'in library "'.__FILE__.'"<br />';
echo '<pre>';
print_r($_SERVER);
echo '</pre>';
}
?>发布于 2010-08-02 14:53:06
$_SERVER['SCRIPT_FILENAME'];$_SERVER reference。
发布于 2012-04-09 21:50:30
当从控制台调用$_SERVER脚本时,不设置PHP数组。
我发现让它在web页面和控制台脚本中运行的唯一方法是使用以下功能:
function php_self(){
$bt = debug_backtrace();
return $bt[count($bt)-1]['file'];
}https://stackoverflow.com/questions/3388902
复制相似问题