PHP传递变量以注册函数-致命错误处理程序

PHP传递变量以注册函数-致命错误处理程序,php,error-handling,Php,Error Handling,我知道这不是正确的错误处理,但它是解决我的问题所必需的。我正在运行一个脚本,该脚本会在数小时内解析循环中的数据,因此我会创建一个日志,记录脚本中不同时刻发生的事情,以确保所有事情都得到正确处理。我的所有日志都保存在与.php文件不同的文件夹中。我记录了大量的信息。但是,所有与日志文件的连接都极大地降低了我的程序速度。相反,我有一个全局$write变量,我只是附加它。为了加速我的程序,我只想在每个循环结束时在日志文件中附加$write。问题是我为我的程序设置了一个max_execution_tim

我知道这不是正确的错误处理,但它是解决我的问题所必需的。我正在运行一个脚本,该脚本会在数小时内解析循环中的数据,因此我会创建一个日志,记录脚本中不同时刻发生的事情,以确保所有事情都得到正确处理。我的所有日志都保存在与.php文件不同的文件夹中。我记录了大量的信息。但是,所有与日志文件的连接都极大地降低了我的程序速度。相反,我有一个全局$write变量,我只是附加它。为了加速我的程序,我只想在每个循环结束时在日志文件中附加$write。问题是我为我的程序设置了一个max_execution_time,如果它在循环完成之前就死了,那么我在该循环中的所有日志都会丢失。作为register\u shutdown\u函数()的一部分,我想记录$write

以下是我所拥有的:

register_shutdown_function( "fatal_handler");
function fatal_handler() {

  global $file, $write;
  $errfile = "unknown file";
  $errstr  = "shutdown";
  $errno   = E_CORE_ERROR;
  $errline = 0;

  $error = error_get_last();

  if( $error !== NULL) {
    $errno   = $error["type"];
    $errfile = $error["file"];
    $errline = $error["line"];
    $errstr  = $error["message"];

    file_put_contents($file, "\n\nFATAL ERROR\n\n", FILE_APPEND);
    file_put_contents($file, $write, FILE_APPEND);
  }
}
问题是我收到以下错误消息: 警告: 文件内容(../../resultLogs/log.txt):无法打开流:第64行的C:\www\php\data\u utils\program.php中没有此类文件或目录

请注意,$file在程序的其余部分工作正常。。。救命啊

请参见:

脚本的工作目录可以在关机时更改 在某些web服务器下运行,例如Apache

因此,确保在执行此操作时使用绝对路径,即

file_put_contents('<absolute-path-to>/resultLogs/log.txt', $write, FILE_APPEND);
file\u put\u内容('/resultLogs/log.txt',$write,file\u APPEND);
正如您所写的“我的所有日志都保存在与.php文件不同的文件夹中”,我想您的问题是,您的
$file
常数相对于
.php
文件,但目录会在出错时更改