知道PHP中导入函数的实际代码在哪里出错


Know where the Actual Code Broke In an imported function in PHP

例如,我有一个简单的包含文件,它有一个函数:

function ViewInclude($file){
    require_once $file.'.inc.php';
}

另一个文件(比如index.php)使用函数:

require_once 'inc.php';
ViewInclude('header');

require失败时,警告信息为:

警告:require_once(header.inc.php):打开流失败:在..../tests/inc.php第4行

中没有这样的文件或目录

现在,让我们说,其他一些文件也包括inc.php文件。当require失败时,错误是at inc.php在某些行

是否有办法知道触发错误的实际文件和行号?(我的意思是包括错误产生的地方。在上面的例子中,类似于:at index.php at line 62)

这样做可能会有所帮助:

  function ViewInclude($file){
       if (file_exists($file)) {
           include_once($file);
       } else {
           $debug = debug_backtrace()[0];
           echo 'Failed to include file in '.$debug['file'].
                ' at line '.$debug['line'].'<br />';
       }
   }

您可以使用debug_backtrace函数来查看脚本如何达到这一点的历史记录。使用try/catch块或set_error_handler来捕获错误