crntab으로 php파일 실행이 안되는 문제
본문
고갱님이 CRONTAB으로 작동되는 방법(직접 요구한건 아니지만 정기적 작업을 위해 CRONTAB 필요)을 원하는데요.
그런데 ROOT 권한은 끝내 못준답니다. ㅠ_ㅠ
CRONTAB에
*/1 * * * * /PHP_설치된_경로/php -q /PHP_파일이_있는_경로/save.php
이렇게 등록해 달라했고 했다는데 반응이 없습니다.
*/1 * * * * /PHP_설치된_경로/php /PHP_파일이_있는_경로/save.php
이렇게도 해 달라 했는데 역시 반응이 없답니다.
2번째로 등록후 CRONTAB 재시작 해 달라 했는데 했는데도 반응이 없답니다.
그런데 SSH로 접속하여
/PHP_설치된_경로/php -q /PHP_파일이_있는_경로/save.php
/PHP_설치된_경로/php /PHP_파일이_있는_경로/save.php
둘다 실행하면 파일은 정상 작동 잘 됩니다.
뭐가 문제일까요?
제 생각에는 고갱님이 잘 등록 안한게 아닐까 싶은데 권한을 안주면서 안된다고만 하니까 답답하네요.
다음부터는 ROOT권한이 필요한데 ROOT 권한을 부여하지 않으면 작업을 진행하지 않으며 을은 갑에게 지급받은 착수금을 반환하지 않는다.
라고 명시해야 겠네요.
답변 3
해당 save.php 파일의 상단에 제대로 경로가 설정되어있나요?
저 같은 경우 크론탭으로 db에 접속해서 쿼리를 조회하고 update 하는 부분이있는데.
save.php 파일의 상단에
include_once('/home/test/public_html/common.php');
이렇게 선언하니 db접속 및 그누보드의 함수들이 사용되더군요
만약
include_once(G5_PATH'/common.php');
이런형태로 save.php 파일의 처음부터 그누보드의 함수나 변수, 상수가 들어가면
인식하지 못하는 경우가 있긴했습니다.
/var/log/cron 로그를 확인하여 제대로 크론잡이 실행하고 있는지 확인하시구요.
로그가 있는데도 제대로 실행되지 않는다면,
코드 제일 상단에 아래와 같이 넣어주세요.
$document_dir = __DIR__;
chdir($document_dir);
document_root 가 제대로 설정되지 않아서 발생되는 문제일수 있습니다.
(테스트를 해보시걸 보니 이 문제는 아닐수도 있음. 저의 경우에는 위 코드를 추가하고 별다른 문제가 없었습니다.)
cli의 php.ini 경로가 다를수 있습니다
-c php.ini경로
이걸 옵션으로 줘보세요