在我的一个PHP
项目中,我在代码文件的开头得到了一个函数debug_backtrace()
,即<?php debug_backtrace() || die ("Direct access not permitted"); ?>
。
虽然研究它,我得到了一些解释,它的工作原理是:
调试Drupal网站中的PHP问题可以是简单快捷的,也可以是问题严重的。PHP包含一个名为debug_backtrace的调试函数,它会打印出调用backtrace函数的代码链。
当我将var_dump()
与debug_backtrace()
结合使用时,得到了以下结果:
array(2) {
[0]=>
array(3) {
["file"]=>
string(61) "C:\xampp\htdocs\folder_name\templates\default\models\home.php"
["line"]=>
int(30)
["function"]=>
string(7) "include"
}
[1]=>
array(4) {
["file"]=>
string(37) "C:\xampp\htdocs\folder_name\index.php"
["line"]=>
int(146)
["args"]=>
array(1) {
[0]=>
string(61) "C:\xampp\htdocs\folder_name\templates\default\models\home.php"
}
["function"]=>
string(7) "include"
}
}
我不明白debug_backtrace()
函数到底是怎么工作的。
请任何人解释是受欢迎的。提前感谢。
研究链接:
debug_backtrace() from registered shutdown function in PHP
Debugging PHP Code with debug_backtrace
Assign debug_backtrace() To a variable in PHP
Print PHP Call Stack
How can I save a PHP backtrace to the error log?
2条答案
按热度按时间7rtdyuoh1#
举个简单的例子...
将输出...
我希望这表明
debug_backtrace
函数所做的只是返回到目前为止所调用的内容。因此,当您第一次调用t1
时,它只是对t1
调用的堆栈跟踪。对于t2
的开始也是如此,但是当t2
调用t1
时,跟踪列出对t2
和t1
的调用。但是正如您所看到的,
debug_backtrace
从Start..
什么也没显示,因为没有任何级别的代码导致打印此跟踪。在您的示例中,它调用
debug_backtrace
并使用or die()
表示“如果debug_backtrace
不返回任何值,则die()
”5m1hhzi42#
我认为debug_backtrace()最有用的方法是跟踪哪个文件是启动内核的init文件,例如
所以你可以从
获取发起呼叫的文件