26

PHP を使用している場合include、どのファイルが を呼び出しているかを調べるにはどうすればよいincludeですか? つまり、親のファイル名は何ですか?

4

8 に答える 8

17

簡単な方法は、親ファイルで (inclue の前に) 変数を割り当て、インクルード ファイルでその変数を参照することです。

親ファイル:

$myvar_not_replicated = __FILE__; // Make sure nothing else is going to overwrite
include 'other_file.php';

含まれるファイル:

if (isset($myvar_not_replicated)) echo "{$myvar_not_replicated} included me";
else echo "Unknown file included me";

ファイルがいつ、どこでインクルードされたかをいじったり、イベントを見つけたりすることもできますが、少し面倒で複雑になる可能性がありget_included_files()ます。debug_backtrace()

于 2012-05-01T03:28:41.827 に答える
16
$fileList = get_included_files();
$topMost = $fileList[0];
if ($topMost == __FILE__) echo 'no parents';
else echo "parent is $topMost";

片親の場合、これは正しい結果をもたらすはずだと思います。

つまり、親が必須ファイルまたはインクルード ファイル自体ではない状況を意味します。

于 2012-05-01T04:06:53.980 に答える
14

返事が遅くなりましたが...

次を使用して、実行中の親ファイル名を確認します。

$_SERVER["SCRIPT_NAME"] // or 
$_SERVER["REQUEST_URI"] // (with query string)
于 2014-02-25T02:00:23.490 に答える
8

インクルードされたファイル内から追加の変更を加えずに、debug_backtrace() を直接使用できます。

$including_filename = pathinfo(debug_backtrace()[0]['file'])['basename'];

これにより、あなたを含むファイルの名前が得られます。

インクルードされたファイル内からアクセスできるすべてのものを表示するには、その中からこれを実行します。

print_r(debug_backtrace());

次のようなものが得られます。

Array
(
    [0] => Array
        (
            [file] => /var/folder/folder/folder/file.php
            [line] => 554
            [function] => include
        )

)
于 2019-03-20T03:38:31.310 に答える
-1

試す:

$current_filename = basename(get_included_files()[0], '.php');

拡張子付きのファイル名が必要な場合は.php、これを試してください:

$current_filename = basename(get_included_files()[0]);

このファイルが含まれているかどうかを確認したい場合は? それで:

if(get_included_files()[0] == __FILE___) {
    // This File Was Not Included
} else {
   // This File Was Included
}

それがうまくいくことを願っています!

于 2021-01-16T03:56:10.220 に答える