//创建日志保存所需目录
function make_dir($folder)
{
$reval = false;
if(!file_exists($folder))
{
/* 如果目录不存在则尝试创建该目录 */
@umask(0);
/* 将目录路径拆分成数组 */
preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);
/* 如果第一个字符为/则当作物理路径处理 */
$base = ($atmp[0][0] == '/') ? '/' : '';
/* 遍历包含路径信息的数组 */
foreach ($atmp[1] AS $val)
{
if ('' != $val)
{
$base .= $val;
if ('..' == $val || '.' == $val)
{
/* 如果目录为.或者..则直接补/继续下一个循环 */
$base .= '/';
continue;
}
}
else
{
continue;
}
$base .= '/';
if (!file_exists($base))
{
/* 尝试创建目录,如果创建失败则继续循环 */
if (@mkdir(rtrim($base, '/'), 0777))
{
@chmod($base, 0777);
$reval = true;
}
}
}
}
else
{
/* 路径已经存在。返回该路径是不是一个目录 */
$reval = is_dir($folder);
/** 如果是文件夹,则强制改为0777 **/
if($reval){ @chmod($folder, 0777); }
}
clearstatcache();
return $reval;
}
//生成日志文件,并设置权限777
function chmod_custom($filename, $mode = 0777)
{
return file_exists($filename)? chmod($filename, $mode) : FALSE;
}
//写入日志
function log_message($level = 'error', $message, $dir_path = '', $file_affix = '')
{
// 验证允许记录的日志类型
$level = strtoupper($level);
$dir_path = trim($dir_path);
$dir_path = storage_path("logs/{$dir_path}");
// 如果创建文件夹失败,则返回FALSE
if(!make_dir($dir_path)){
return FALSE;
}
$cache_file_path = $dir_path . '/' . $file_affix. '.log';
/** 如果文件已存在,则强制改为可写状态 **/
chmod_custom($cache_file_path, 0777);
$message = $level . ' - ' . date('Y-m-d H:i:s') . ' --> ' . $message . "\r\n";
return file_put_contents($cache_file_path, $message, FILE_APPEND | LOCK_EX);
}
555