2012-11-14 3 views
0

PHP 스크립트에서 cron 작업을 관리 할 수있는 서버를 설정하는 데 문제가 있습니다. 아이디어는 다음과 같습니다. 사용자가 원하는만큼 많은 작업을 생성하여 각각에 대해 경고를 설정할 수 있습니다. 알람이 MySQL 데이터베이스에 저장된 후 사용자가 지정한 시간에 해당 항목에 대한 크론 게임을 만들고 싶습니다.PHP에서 crontab 사용

논리는 매우 간단하지만 유닉스 사용자/파일 권한 이상에 좌절감을 느낍니다. 문제는 사용자 "www-data"에 crontab을 실행할 권한이 없으므로 PHP 스크립트에서 shell_exec 호출을 통해 cronjob을 관리하는 데 사용할 수 없습니다. 비슷한 문제에 대해서는 많은 튜토리얼/스레드를 읽었지만 행운은 없습니다. 내가 얻을 수있는 가장 가까운 것은 내가 www 데이터 사용자가 crontab을 실행할 수있는 권한이 있는지 확인해야한다는 것이 었습니다. 그러나 "www-data"사용자를 "crontab"그룹에 넣고 "/etc/cron.d"디렉토리에 "cron.allow"파일을 만들었지 만 아직 아무것도 만들지 않았습니다.

Btw 나는 $ output = shell_exec ("crontab -u www-data -l")를 사용하여 작동하는지 확인합니다 ($ output == null이면 오류가 발생했습니다).

이 기능을 사용하려면 어떻게해야합니까? 아니면 조금 다른 접근 방식을 사용해야합니까 (어쩌면 나는 www 데이터로 쓰기가 가능한 파일을 가질 수 있으며 cronjobs를 확인해야하는 crontab 구성 어딘가에 설정해도되지만 그 방법을 모르는 경우)?

답변

0

편집 : 수정 된 파일을 /etc/cron.d에 넣을 수 있습니다.이 파일은 cron comamnds에서도 읽습니다.

부인 성명 : (내가 저주받을거야하지만 난이 마지막으로 모든 어떻게했는지 내가 기억하는 경우) cron.allow 파일을 처리

+0

내가 구글 상점에 "포함"아무것도 찾을 수없는, 단지 기본'-e/-l/-r'와'crontab을/경로// file'로를 crontab에. 간단히 말해서, 나는 crontab이 PHP 스크립트를 통해 액세스 가능/편집 가능한 다른 파일을 확인하고 모든 cron 작업을 해당 파일로 바꾸지 않기를 바란다. 인수없이 crontab을 실행하고 'include/location/to/file'을 입력했다면 저장 방법을 모르겠습니다 (아무 것도 저장하지 않고 프로세스를 종료하는 CTRL + C로만 닫을 수 있습니다). 가장 좋은 방법은 main cron 파일 (/ var/spool/cron/crontabs 디렉토리에 있음)에서 어떤 식 으로든 파일을 지정하는 것입니다. –

+0

사과드립니다. 내가 해냈다 고 맹세 할 수는 있지만 쉘 스크립트 나 다른 것과 혼동 스러울 수 있습니다. 내 대답이 잘못되어 모두 수정되었습니다. –

+0

아무런 문제가 없습니다. 그런 기능이 놀라 울 정도로 유용 할 것입니다. 적어도 지금은 일정 잡기 작업을 훨씬 쉽게 할 수있는 방법을 알 수 있습니다. –

0

그것은 내 응용 프로그램이 실행되는 시스템이 것을 나는 이렇게하지했습니다 /cron.deny 파일은 매우 이상하게 (적어도이 파일들을 이해함에있어). 내가 /etc/cron.allow 파일을 삭제하고 갑자기 www 데이터 사용자는 PHP 스크립트에서 crontab 명령을 사용할 수 있습니다. cron.allow 파일에 www-data 사용자가 명시된 것처럼 작동하지 않는 이유는 모르겠지만 지금은 작동하는 것처럼 보입니다.