PHP fclose不';以后打开文件时,请不要将其解锁
我的问题出现在尝试登录文件时。我用一个ToLog方法创建了一个cLog类,其工作原理如下:PHP fclose不';以后打开文件时,请不要将其解锁,php,fopen,fclose,Php,Fopen,Fclose,我的问题出现在尝试登录文件时。我用一个ToLog方法创建了一个cLog类,其工作原理如下: function ToLog($logType, $text) { $myDate = date("H:i:s d/m/Y"); $ip = $_SERVER['REMOTE_ADDR']; $fichero = $this->GetLogFilename($logType); $filehandler = fopen($this->pathfichero
function ToLog($logType, $text) {
$myDate = date("H:i:s d/m/Y");
$ip = $_SERVER['REMOTE_ADDR'];
$fichero = $this->GetLogFilename($logType);
$filehandler = fopen($this->pathfichero.$fichero, "a");
if ($filehandler == false)
{
print_r (error_get_last());
}
fputs($filehandler, $myDate.' | IP: '.$ip.' | USER: '.$_SESSION['usr'].' | '.$text."\r\n");
fclose($filehandler);
return;
}
如果我从其他类中的方法内部创建一个oLog()对象,并调用$oLog->ToLog($logtype,'what I want to log'),效果很好,但是当我调用其他方法,再次调用$oLog->ToLog(…)方法时,它失败并告诉我:
[type] => 2 [message] => fopen(log.admin): failed to open stream: Permission denied [file] => /.../cLog.php
这是怎么回事?当我第一次在文件上写它工作时,第二次即使我已经关闭了它,PHP告诉我“权限被拒绝”。我怀疑写入+关闭文件会延迟,但我该如何解决这个问题呢?请注意,如果($filehandler==false),则需要返回,而不是返回fputs()True!这并不是它失败的原因,但你是对的。