输出博客虚拟主机的访问日志

折腾博客,有时候想看看站点的 Apache/Nginx 日志,因为使用的是虚拟主机,需先登录到虚拟主机的 DirectAdmin 控制面板、点击域名、站点统计,再查看“使用日志”或“错误日志”。一两次还好,经常登录的话感觉有点繁琐,所以乌帮图试试用几行 PHP 代码,把 Apache 日志输出到博客根目录,便于直接前台访问。

主要步骤:

一、PHP 模拟登录到 DirectAdmin 控制面板,并保存 cookie 到文件。

二、读取保存的 cookie,访问日志页面并打印输出。

三、使用 DirectAdmin“计划任务”功能或 WordPress 的 WP-Cron 来定时执行。

四、可利用 highlight.js 来简单美化输出的访问日志。

简单代码(收集整理自互联网):

1、create_cookie.php,POST 登录 DA 面板,输出 cookie。

<?php
function curl_login($url, $post, $cookie){
$ch = curl_init();
// 如果后台地址是https,以下两行跳过证书检查
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_POST, 1);
curl_exec($ch);
curl_close($ch);
}
$url = 'http://ip:2222/CMD_LOGIN'; //DirectAdmin 控制面板地址
$cookie = dirname(__FILE__).'/cookie.txt'; //保存 cookie 到当前目录
$post = array(
'username' => 'username', //DirectAdmin 控制面板的用户名
'password' => 'password', //DirectAdmin 控制面板的密码
'referer' => '%2FCMD_LOGIN'
);
curl_login($url, $post, $cookie);
?>

2、get_logs.php,使用 cookie 登录,打印日志。

<?php
function curl_get($url, $cookie){
$ch = curl_init();
//如果主机 DirectAdmin 面板开启了 referer 检查,添加一个 REFERER 参数
//curl_setopt($ch,CURLOPT_REFERER,"https://ip:2222/");
// 同上步登录,如果后台地址是https,以下两行跳过证书检查
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
$log = curl_exec($ch);
curl_close($ch);
return $log;
}

$cookie = dirname(__FILE__).'/cookie.txt';

$url = 'http://ip:2222/CMD_SHOW_LOG?domain=wbt5.com&type=log&lines=200'; //打印域名 wbt5.com 最新的 200 条访问日志

$con = curl_get($url, $cookie);

echo htmlentities($con);

?>

3、设置定时执行。

可根据 cookie 的有效时间来设置定时执行 create_cookie.php。也可将两段代码整合在一起,访问 get_logs.php 时输出日志。

博主使用的是 DirectAdmin 面板的计划任务。

每 1 小时获取一次 cookie:

/usr/local/bin/php /home/domains/wbt5.com/public_html/create_cookie.php

每 5 分钟打印一次 Apache 日志:

/usr/local/bin/php /home/domains/wbt5.com/public_html/get_log.php > /home/domains/wbt5.com/public_html/logs.html

具体效果见本博客页脚“访问日志”链接,账号 admin,密码 787878。

» 链接地址:https://wbt5.com/access-log.html »英雄不问来路,转载请注明出处。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注