[완료]cron으로 PHP 스크립트 실행시
글쓴이: kkume / 작성시간: 수, 2011/03/23 - 11:35오전
cron으로 php 스크립트를 root로 실행하고 있습니다.
5 * * * * /root/test/logtest.php
php 스크립트를 보면
<? $log_path = "./log/"; $log_file = $log_path . "logtest.log"; $cur_date = date("Y-m-d H:i:s"); $log_msg = "[$cur_date] Starting autosend... ==============================\n"; write_log($log_file, $log_msg); // 로그 function write_log($file, $log) { $fp = @fopen($file, "a+"); ob_start(); print_r($log); $msg = ob_get_contents(); ob_end_clean(); @fwrite($fp, $msg); @fclose($fp); } ?>
cron으로 위 스크립트를 실행 하면 왜 log 파일이 만들어 지지 않는지요.
그래서, touch logtest.log를 하고 나서 파일 모드를 777로 해도 log 파일에 내용이 들어 가질 않습니다.
왜 그런지 알려 주시면 고맙겠습니다.
감사합니다.
Forums:
cronjob script를 만들 때는 절대 경로를
cronjob script를 만들 때는 절대 경로를 사용하도록 하시든지, script 내부에서 change directory를 하셔야 합니다.
감사합니다. ^^
결론은.. 절대경로.
감사합니다.
1. php-cli package 는 설치
1. php-cli package 는 설치 하셨나요?
php interpreter를 지정 해 주셔야죠.
#!/usr/bin/php
2. /root/test/logtest.php 에 실행 권한은 있나요?
마지막으로 $fp = @fopen($file, "a+"); 이런식으로 오류 메세지를 무시하는건 좋은 습관이 아닙니다.
귀찮더라도 오류 메세지를 남겨야 정확한 오류 발생 위치와 원인을 찾을 수 있습니다.
그리고 모든 함수는 종료시에 결과에 대해 성공/실패를 리턴하도록 하는 것이 좋습니다.
write_log 가 종료하면 성공/실패 값을 리턴 해 주세요.
네.. 1,2번 모두 된 상태 입니다.
마지막번은 참고 하겠습니다.
감사합니다.
댓글 달기