首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从库中查找调用方脚本路径

从库中查找调用方脚本路径
EN

Stack Overflow用户
提问于 2010-08-02 14:51:51
回答 2查看 3.1K关注 0票数 3

在执行包含库的脚本时,我想从库中找到调用者脚本,在Perl中,我使用env:$0,它为调用方脚本提供了路径。在PHP中,__FILE__给出了当前脚本,所以在库中它给我的是库路径,而不是调用方脚本路径。

从perl文档:$0包含包含正在执行的Perl脚本的文件名。

我认为可以使用debug_backtrace()来完成,但是还有另一种更好/更短的方法吗?

编辑:(添加示例代码)

文件: index.php

代码语言:javascript
复制
<?php
require 'locallib.php';
echo 'in original script = '.__FILE__.'<br />';
?>

文件: locallib.php

代码语言:javascript
复制
<?php
require "lib.php";
echo 'in library "'.__FILE__.'"<br />';
?>

文件: lib.php

代码语言:javascript
复制
<?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>';
}
?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-02 14:53:06

代码语言:javascript
复制
$_SERVER['SCRIPT_FILENAME'];

$_SERVER reference

票数 3
EN

Stack Overflow用户

发布于 2012-04-09 21:50:30

当从控制台调用$_SERVER脚本时,不设置PHP数组。

我发现让它在web页面和控制台脚本中运行的唯一方法是使用以下功能:

代码语言:javascript
复制
function php_self(){
  $bt = debug_backtrace();
  return $bt[count($bt)-1]['file'];
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3388902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档