2011-12-08 2 views
1

내 웹 사이트 cpanel을 통해 cron 작업을 만들려고합니다. 지원 서비스에 대해 이야기를 나누었고 웹 사이트에서 PHP 파일을 실행하기 위해이 명령을 내게주었습니다.Cron jobs help

이것은 작동하지 않는 것처럼 보이며, */1을 사용하여 매분마다 분 간격을 설정했습니다. 내가 파일 update.php의 내부에 아래의 코드를 사용하고

:

<?php 
ini_set('display_errors', 1); 
ini_set('log_errors', 1); 
ini_set('error_log', dirname(__FILE__) . '/error_log.txt'); 
error_reporting(E_ALL); 

require('minequery.class.php'); 
include('../config/config.php'); 

    $date = date("D-M-Y"); 

    $file = fopen("UPDATE_LOG($date).txt", 'w'); 

    $query = mysql_query("SELECT * FROM servers") or die(mysql_error()); 

    if($query) { 

    while($row = mysql_fetch_array($query)) { 

     $ip = $row['ip']; 
     $port = $row['port']; 
     $name = $row['name']; 

     $string = "[UPDATE LOG]: $date - Updated Server $name \n"; 


     fwrite($file, $string); 

     print("[UPDATE LOG] Updated Server $name </br>"); 



    } 

    mail("[email protected]","UPDATED","Server has updated","From: Mymcstatus");  

    } else { 

     print("Cant query"); 
    } 



?> 

내가 코드가 작동하는 웹 브라우저를 통해 수동으로 update.php로 이동하지만, 아무것도 cronjob에 일어날 것 같다

. 나는 무엇을 놓치고 잘못 했는가?

답변

0

여기에 발생할 수있는 몇 가지 사항이 있습니다. 첫 번째는 update.php의 파일 사용 권한을 확인하고 실행 파일인지 확인하는 것입니다. cron이 update.php를 실행할 수있는 권한이없는 다른 사용자로 실행 중일 수 있습니다. 두 번째로 시도해 볼 수있는 것은 update.php의 첫 번째 줄로 공백없이 공백을 넣는 것입니다.

#!/usr/local/bin/php 
+0

그래도 변경 사항이 없습니다. –

0

일반적으로 크론 작업은 PHP는 그것이 실행되고있을 가능성이 있지만, 출력 파일이 다른 곳에서 생성되는 지금 살고있는 같은 디렉토리에서 실행되지 않습니다. 출력 파일의 경로를 변경하려고하면 전체 파일 경로, 즉 일하기 : 내가 파일 경로를 해결하기 위해 관리 위 주석의 도움으로

$file = fopen("/home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/UPDATE_LOG($date).txt", 'w'); 
+0

좋아, 내가 수동으로 가면 오류가 발생한다. 그러나 그것은 또한 Cronjobs가 여전히 작동하도록 만드는 것 같지 않습니다. –

+0

무엇이 오류입니까? – TheOx

+0

경고 : fwrite()는 매개 변수 1이 리소스가 될 것으로 예상하고 boolean은 /home/mymcstat/domains/mymcstatus.net/public_html/redesign/scripts/update.php 28에 주어진 것입니다. –

0

뿐만 아니라 아래로 명령했다. 나는 잘못된 사용자 경로를 여기에 넣었습니다. 작동하는 명령입니다. 도움

0

그것은 항상 스크립트의 경로에 cd에 좋은 아이디어에 대한

/usr/local/bin/php -q /home/mymcstat/domains/mymcstatus.net/public_html/redesign/scripts/update.php 

감사합니다. 이 방법을 사용하면 includerequire 파일의 이름과 파일 조작에 관여하는 다른 파일 이름을 변경할 필요가 없습니다. cronjob 명령은 다음과 같습니다.

cd /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/;/

을 /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/update.php -q usr/지방/빈/PHP는이 방법으로 어떤 절대 파일 경로를 제공 할 필요는 없습니다.