2012-11-23 52 views
1

我有一个cron集来运行一个php文件,但由于某种原因,它不工作的时候到了。我可以在终端中手动调用相同的文件,它工作正常。没有错误信息。cronjob没有为特定文件执行

注意:还有很多作业为不同的文件夹&文件设置,它们都可以正常工作。权限也相同。

感谢

科雷

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

PERMISSIONS

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和工作正常。
  • 此代码工作正常,当我打电话在终端运行它。
  • 除此之外,其他任何cronjob都可以正常工作。

CODE

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); 
} 
+0

你有没有检查cronlog? – GBD

+0

GBD cronlog位于哪里?我试图查看/home/user/cronlog.log但不存在 – Erik

回答

2

确保PHP可执行文件在您的路径或将完整路径在cron作业到PHP像

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

,如果你不知道在哪里php可以运行你可以运行

which php 

拿到路径

+0

我有大约20个作业,并且所有工作正常,没有'/ usr/bin/php'部分也包含文件具有'0755'权限。 – BentCoder

+0

然后我建议你按照san4o的建议做,并检查错误是在日志文件中,另外一件事你应该记住的是,如果你在你的cron中包含其他php文件,你需要确保它的路径是正确的以及 –

+0

刚发现,相同的文件在不同的文件夹中工作。所有文件夹和文件的权限相同。尽管如此,仍然不能在原始文件夹中工作没有错误。 – BentCoder

1

还建议将输出重定向到日志文件,并使用更短的运行时间间隔调试

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

+0

创建空白日志文件。 – BentCoder

+0

添加一些调试回声“一些...”;在PHP脚本。 你有这个crontab中的另一份工作吗?他们工作的剂量? – san4o