상세 컨텐츠

본문 제목

[php] 로그 파일 생성 하기 슈퍼전역변수 fopen,fputs,fclose

php

by 2hansoul 2023. 1. 5. 20:54

본문

반응형

1.$GLOBALS

php에는 어디에서나 쓸 수 있는 슈퍼 전역변수가 있다 로그파일 생성 시 슈퍼전역변수를 사용한다

 

2.fopen 

fopen() 함수는 filename이 지정한 파일을 엽니다 파일의 끝에서 쓰기 위해 추가 모드에서 텍스트 파일을 엽니다. fopen() 함수는 파일이 없고 논리 파일이 아니면 파일을 작성합니다.

$fp = fopen($GLOBALS['LOG_DIR'] . "/" . date('Ymd') . "_" . $status . ".log", "a");​

로그를 남기기 fopen 파일 모드는 a(파일을 쓰기 전용으로 열고, 파일 포인터는 파일의 끝부분에 위치함.

만약 파일이 존재하면 이어 쓰고, 파일이 없다면 새로 생성함.)로 설정

 

3.fputs 

fputs () 함수는 열린 파일에 기록합니다.

함수가 성공적으로 수행되면,이 기록 된 바이트의 수를 반환한다. 실패하면 FALSE를 반환합니다.

fputs(file,string,length)

fputs($fp, "[" . date('H:i:s') . " ".$_SERVER['REMOTE_ADDR']."] [".$_SERVER['REQUEST_URI']."] - " . $txt . "\n");​

 

$fp에 해당 텍스트를 기록 한다 

ex) [15:21:17 114.203.239.132] [/main/lib/lib.php] - 

 

4.fclose

fclose 는 닫기 

간단하게 위에서 부터 해당 경로 파일 연다 -> 작성 한다 -> 종료한다 

fclose($fp);

5 .로그파일 작성 함수 

$LOG_DIR	= "/var/www/html/LOGS/money_project";  //슈퍼 전역변수 경로
/*******************************************************************************
*로그 저장
*******************************************************************************/
function log_save($txt, $status = "")
{
    global $REMOTE_ADDR,$REQUEST_URI;
    
	$fp = fopen($GLOBALS['LOG_DIR'] . "/" . date('Ymd') . "_" . $status . ".log", "a");
  
	if($fp)
	{
		echo fputs($fp, "[" . date('H:i:s') . " ".$_SERVER['REMOTE_ADDR']."] [".$_SERVER['REQUEST_URI']."] - " . $txt . "\n");
		fclose($fp);
	}
    
}

해당 함수 파리미터인 $txt 는 파일 작성 하는 부분이고 $status는 해당 파일을 열수 있다 

사용법)

회원가입 하는 부분에 해당 함수를 활용 해보자 

log_save($sql,'user_join');

회원 가입이 완료 되면 함수가 사용되게 설정 하였다

슈퍼전역변수에 경로인 해당 경로에 파일이 생성 된걸 확인 할 수 있다

파일을 열어보면 로그가 잘 생성 되었다 왠만한 곳 에서 다 활용이 가능 하다 

6. failed to open stream: Permission denied

해당 함수를 실행이 안되면 역시나 권한이 문제 읽기 쓰기 권한을 부여 해주면 가능 하다 

 

 

반응형

관련글 더보기

댓글 영역