2011-12-08 7 views
1

私は自分のウェブサイトcpanelからcronジョブを作ろうとしています。私はサポートサービスに話し、彼らは私に私のウェブサイトでPHPファイルを実行するために実行するこのコマンドを与えた。Cron jobs help

これは機能しないようですが、*/1を使用して分ごとに分間隔を設定しました。

私は、ファイルupdate.phpを内部に以下のコードを使用しています:私は、コードが動作するWebブラウザを介して手動で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"); 
    } 



?> 

が、何もcronジョブで発生していないようです。何が欠けているのか、間違っているのですか?

答えて

0

ここで起こっていることがいくつかあります。最初は、update.phpのファイルパーミッションをチェックし、それが実行可能であることを確認することです。 cronがupdate.phpを実行する権限を持たない別のユーザーとして実行されている可能性があります。第2の試みは、update.phpの最初の行として、前に空白を入れないようにすることです。

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

[OK]を追加しても変更はありません。 –

0

通常のcronジョブは、あなたのPHPは、それが実行されている可能性がありますが、出力ファイルは別の場所で作成されているので、住んでいる同じディレクトリから実行されていません。私は、ファイルパスを修正するために管理が、それはまた、コマンドに降りてきた上記のコメントの助けを借りて

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

私は手動でそこに行くとエラーになります。しかし、それはまだCronjobsを動作させるように見えません。 –

+0

エラーは何ですか? – TheOx

+0

警告:fwrite()は、パラメータ1がリソースであることを期待しています。ブール値は/home/mymcstat/domains/mymcstatus.net/public_html/redesign/scripts/update.php 28行にあります。 –

0

:ファイル、すなわちへの完全なパスに出力ファイルのパスを変更してみてください。私は間違ったユーザーパスをここに入れていましたが、動作するコマンドです。

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

ヘルプ

0

ためのおかげで、それはあなたのスクリプトのパスにcdすることは常に良い考えです。このようにして、includerequireファイルの名前とファイル操作に関わる他のファイル名に変更を加える必要はありません。あなたのcronjobコマンドは次のようになります:

cd /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/;/usr/local/bin/phpのは、どのファイルの絶対パスをこのように入力する必要はありません-q /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/update.php