1

PHPファイルを実行するように設定されたcronがありますが、何らかの理由でそれが機能しません。ターミナルで同じファイルを手動で呼び出すことができ、正常に動作します。エラーメッセージもありません。

注: さまざまなフォルダーとファイルに設定されたさらに多くのジョブがあり、それらはすべて正常に機能します。権限も同じです。

ありがとう

クロン

30 2 * * 1,2,3,4,5 php /var/www/html/cronjob/update-db.php

権限

drwxr-xr-x  2 root   root      4096 Nov 20 10:17 cronjob

-rwxr-xr-x 1 root root 5808 Nov 21 17:21 update-db.php
  • conn.php は他の多くの cronjobs で使用されており、正常に動作します。
  • このコードは、ターミナルで run を呼び出すと正常に動作します。
  • これを除けば、他のすべての cronjob は問題なく動作します。

コード

require_once "/var/www/html/dbfolder/conn.php";


function write_log($message)
{
    $filename = 'update-sis-assessment-column-log.txt';

    if (file_exists($filename))
    {
        $handle = fopen($filename, 'a');
    }
    else
    {
        $handle = fopen($filename, 'w');
        //chmod($filename, 0644);
    }

    fwrite($handle, $message . "\r\n\r\n");
    fclose($handle);

    exit;
}

if (connectDB() === true)
{
    $query = "SELECT.......";
    $rcset = mysql_query($query);

    $terms = null;

    if (@mysql_num_rows($rcset) > 0)
    {
        while ($records = mysql_fetch_array($rcset))
        {
            if (ctype_digit($records['Term']))
            {
                $terms .= "'" . substr($records['Term'], 0, 4) . "-01', ";
            }
        }

        $terms = substr($terms, 0, -2);
    }

    write_log('DONE : ' . $terms);
}
4

2 に答える 2

2

php実行可能ファイルがパスにあることを確認するか、次のようにcronジョブにphpへのフルパスを入れてください

30 2 * * 1,2,3,4,5 /usr/bin/php /var/www/html/cronjob/update-db.php 

phpがどこにあるかわからない場合は、実行できます

which php

パスを取得する

于 2012-11-23T09:14:26.120 に答える
1

また、出力をログ ファイルにリダイレクトし、デバッグの実行時間間隔を短くすることをお勧めします

*/5 * * * * /usr/bin/php /var/www/html/cronjob/update-db.php >> /path_to_log.log

于 2012-11-23T09:24:16.370 に答える