想查看PHP错误日志,首先需要对php.ini进行配置,在php.ini中设置log_errors和error_log两项。
log_errors:设置为On,表示将脚本运行的错误信息记录到日志中。
error_log:用于设置错误日志的路径。
注:服务器端配置时,还需要设置error_reporting和display_errors两项;
error_reporting应该设置为E_ALL,表示记录所有错误信息
display_errors应该设置为Off,表示不向屏幕输出错误信息
下面是从错误日志中读取信息的代码:
<?php
/**
* 从错误日志中读取信息
*/
class ErrorLog
{
// 获取错误日志的最后$linefromlast行
public function getErrorLog($linefromlast){
set_time_limit(0);
header("Content-Type:text/html;charset=utf-8");
//设置为只有本服务器才能查看错误日志,可自行选择配置
if($_SERVER["REMOTE_ADDR"]!="127.0.0.1")
header("HTTP/1.1 404 NOT FOUND");
//日志文件路径
if(function_exists("ini_get")){
$file = ini_get("error_log");
}else{
$file = "D:\wamp\php_errors.log";
}
$starttime = time();
$this->readLog($file,$linefromlast,$starttime);
}
//从错误日志文件中读取最后$linefromlast行
private function readLog($file,$linefromlast,$starttime){
$fp = @fopen($file, "r");
$line = 0 ;
//统计总共多少行数据
while (stream_get_line($fp, 8192,"\n")) {
$line++;
}
// 将文件指针归零
fseek($fp, 0);
$i = 0 ;//计数
while (!feof($fp)) {
$i++;
$buffer = fgets($fp,8192);//读取一行
//还未到最后$linefromlast行时,跳过输出
if($i <=$line-$linefromlast)
continue;
echo $buffer . "<br>";
}
fclose($fp);
$endtime = time();
$time = $endtime - $starttime;
echo "from $line line read the last $linefromlast line take time : $time second <br/>";
}
}
结果如下图: