2013-08-27 2 views
0

상용 시스템을 만들고있어 모든 사람들을 위해 작동해야하기 때문에 "일반적인"방법으로 cron 작업을 설정하려고합니다.PHP를 사용하여 cron 작업을 설정하십시오.

<?php 
$data = '0 0,12 * * * -q /public_html/currency.php '; 
file_put_contents('cron.txt', $data, FILE_APPEND); 
exec('sudo crontab cron.txt', $output, $return); 
if($return === 0) 
{ 
    echo 'Cron Successful'; 
    } else { 
    echo 'Cron Unsuccessful' . $output; 
} 
?> 

을 그리고 오류를 받고 있어요 :

이 내가 뭘하는지입니다 크론 UnsuccessfulArray이

가 왜이 오류는 무엇입니까? cron.txt에는 $data으로 쓰여진 모든 것이 들어 있습니다.

+2

실제 메시지를 보려면'print_r ($ output)'을 수행하십시오. –

+0

실제 메시지는'Array() ' –

+0

아 (정규) 출력이 없습니다. 명령을 살펴보면'sudo '는 암호를 입력 할 것을 기대할 것입니다. 그렇지 않습니까? 당신은 그것을 파이프해야 할 것입니다. (끔찍한 좋은 습관은 아니지만 그것을 알고 있다고 가정합니다) –

답변

0

$output 변수가 문자열이 배열을 캐스팅하려면 exec 기능 (http://php.net/manual/en/function.exec.php)

에 PHP 배열 참조로 전달됩니다, 당신은 다음 예에서와 같이 print_r (http://www.php.net/manual/en/function.print-r.php)와 같은 기능을 사용할 수 있습니다 :

코멘트에 제안으로
if ($return === 0) { 
    $message = 'Cron Successful'; 
} else { 
    $message = 'Cron Unsuccessful' . print_r($output, true); 
} 

, 보안 문제에 대한,의 sudoers 중 웹 서버 사용자를 탈퇴하지 않는 것이 좋습니다.

+0

그래, 완전히 제거 했으므로 최종 사용자는 cron 작업을 하나만 추가하면됩니다. –

0

첫 번째 질문 : 당신이 실제로이 PHP 코드를 실행하고있는 사용자가 sudo 액세스 권한을 갖고 있지 않기 때문에 (그리고 다행스럽게도) 원하는 결과를 얻지 못하고 있습니다. 이 문제를 "고치려면"셸을 열고 간단하게 : php example.php를 실행하는 대신 sudo php example.php를 실행하십시오. 그게 효과가 있어야합니다.

그러나 해결하고자하는 문제를 다시 생각해 보시기 바랍니다. 당신이 할 수있는만큼 자동화하는 것을 볼 수 있습니다. 좋은 일 이겠지만 쉘 스크립트를 사용하여 대신 환경을 설정하십시오. 그 쉘 스크립트를 git/svn 저장소에 저장할 수도 있습니다.

+0

시스템을 설치하는 동안 최종 사용자에게 번거 로움을 덜어 주려고했지만 cronjob을 추가하고 모든 cron 작업을 하나의 파일로 끌어와 쉽게 만드는 방법을 자습서에 첨부하기로 결정했습니다. 나는 쉘 스크립팅과는 거리가 멀다. 그래서 미래의 업데이트에서 이것을 다시 생각할 것이다. 현재로서는 사용자가 혼자서 1 cron 작업을 추가하는 번거 로움을 겪어야합니다. –

관련 문제