我有一个带有PHP的网页,Apache,MySQL在Ubuntu上运行。我的网页有插入,更新,删除等功能。
现在我想监视用户对Web服务器的操作,例如在用户登录Web服务器时写入日志文件并执行某些操作:插入,更新或删除数据。
我该怎么做?
答案 0 :(得分:-1)
如果PHP是apache2模块,Php会将错误日志存储在/ var / log / apache2中。共享主机通常将日志文件存储在根目录/日志子文件夹中。但是......如果你有权访问php.ini文件,你可以这样做:
error_log = /var/log/php-scripts.log
在Cpanel中:
/usr/local/apache/logs/error_log
如果所有其他方法都失败了,您可以使用
检查日志文件的位置<?php phpinfo(); ?>
第二个选项:
要写入txt文件并每天创建一个新文件。使用日期(&#34; j.n.Y&#34;)作为日志文件名的一部分。
//Something to write to txt log
$log = "User: ".$_SERVER['REMOTE_ADDR'].' - '.date("F j, Y, g:i a").PHP_EOL.
"Attempt: ".($result[0]['success']=='1'?'Success':'Failed').PHP_EOL.
"User: ".$username.PHP_EOL.
"Pass: ".$password.PHP_EOL.
"-------------------------".PHP_EOL;
//Save string to log, use FILE_APPEND to append.
file_put_contents('./log_'.date("j.n.Y").'.txt', $log, FILE_APPEND);
因此,您可以将其放在hasAccess()
方法中。
public function hasAccess($username,$password){
$form = array();
$form['username'] = $username;
$form['password'] = $password;
$securityDAO = $this->getDAO('SecurityDAO');
$result = $securityDAO->hasAccess($form);
//Write action to txt log
$log = "User: ".$_SERVER['REMOTE_ADDR'].' - '.date("F j, Y, g:i a").PHP_EOL.
"Attempt: ".($result[0]['success']=='1'?'Success':'Failed').PHP_EOL.
"User: ".$username.PHP_EOL.
"Pass: ".$password.PHP_EOL.
"-------------------------".PHP_EOL;
//-
file_put_contents('./log_'.date("j.n.Y").'.txt', $log, FILE_APPEND);
if($result[0]['success']=='1'){
$this->Session->add('user_id', $result[0]['id']);
//$this->Session->add('username', $result[0]['username']);
//$this->Session->add('roleid', $result[0]['roleid']);
return $this->status(0,true,'auth.success',$result);
}else{
return $this->status(0,false,'auth.failed',$result);
}
}
你可以做的另一件事是:
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );
然后观看文件:
tail -f /tmp/php-error.log
或者更新php.ini,如2008年this blog entry中所述。
有关error_log的详细信息,您可以访问此link