要求相反?

GT2*_*T22 2 php

是否有可能PHP脚本知道另一个脚本是否通过require或require_once调用它?

例如:

if scripta.php calls me do xyz;
if scriptb.php calls me do abc;
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢你的建议.这更像是一个问题,而不是一个实际的问题.我意识到我可以设置一个变量$ caller并在我创建require语句时更新它.我只是想知道是否有另一种方法可以在被调用的文件中执行此操作:)

Kai*_*aii 5

如果您只是想检查您的文件是否包含在内:

$_SERVER['SCRIPT_FILENAME']将始终返回最初调用的脚本的文件名.(例如"start.php")

常量__FILE__将始终返回其使用的脚本的真实文件名.(例如"library.inc.php")

所以你可以这样做:

if ($_SERVER['SCRIPT_FILENAME'] !== __FILE__) {
    echo "script was included!";
}
else {
    echo "script was called directly!";
}
Run Code Online (Sandbox Code Playgroud)

如果要区分文件的包含位置:

$include_from = get_included_files();
if (count($include_from) > 1) {
    $include_from = $include_from[count($include_from)-2];
}
else {
    $include_from = $include_from[0];
}
switch ($include_from) {
    case __FILE__:
        // not included, called directly
        break;
    case "/path/to/scripta.php":
        // do abc
        break;
    case "/path/to/scriptb.php": 
        // do xyz
        break;
    default:
        // do other stuff
        break;
}
Run Code Online (Sandbox Code Playgroud)