在403标题被触发之前,fputs不会写入

时间:2017-04-26 14:13:52

标签: php logging http-status-code-403 fputs

我有一个函数forbid(),它应该写入一个拒绝访问的日志文件,以及拒绝的原因。出于某种原因,它不是写入日志文件。

// function to forbid access
function forbid($reason) {
    // explain why
    if ($reason) fputs($file, "=== ERROR: " . $reason . " ===\n");
    fputs($file, "*** ACCESS DENIED ***" . "\n\n\n");
    fclose($file);

    // forbid
    header("HTTP/1.0 403 Forbidden");
    exit;
}

$file在代码的前面定义,此函数之前的其他fputs()正常工作;我认为这是关于403标题导致它不能写入的东西。

1 个答案:

答案 0 :(得分:2)

看起来像是一个范围问题。由于它是一个函数,它在函数范围内寻找文件句柄$file,而不是全局。您需要将文件句柄传递给函数。

我也会假设错误报告已关闭,从而抑制了您的问题。