2012-08-01 4 views
0

J'utilise crontab pour exécuter mon script toutes les minutes. Mais le script ne fonctionne pas correctement. Ce script doit créer un fichier, se connecter à un autre fichier et écrire dans DB. N'écrivez que dans le travail DB. Quand je démarre le script manuellement, cela fonctionne très bien. Ceci est le script:Crontab ne se connecte pas au fichier

#!/usr/bin/php 
<?php 
require 'include/functions.php'; 
require 'include/logger.php'; 

$lock_file_name = "test.txt"; 
$lock_file = fopen($lock_file_name, "w+"); 
fclose($lock_file); 

$log_file = "test.log"; 
$log = new log($log_file); 
$logEnabled = 1; 

if ($logEnabled==1) {$log->add("DEBUG: Start test.");} 

if_dbconn(); 
$SQL = "INSERT INTO .`test` VALUES (1666, 6, 6, '6', '6', '6', '6', 6, '6', '6', 6, 6, 6, '6')"; 
mysql_db_query($db,$SQL); 
?> 

Mon look Cron comme ceci:

* * * * * /usr/bin/php -f /path/to/script/testCron.php > /dev/null 

Répondre

1

Vous devez spécifier un chemin d'accès complet ou modifier le répertoire en cours avant d'exécuter le script. Le script n'a aucun droit d'accès pour créer un fichier journal dans le répertoire où cron le démarre.

+0

Merci beaucoup. C'était le problème –

2

Je supprimerais

> /dev/null 

et le remplacer par l'enregistrement de votre stdout/stderr dans un fichier pour voir ce qui se passe sur.

> /tmp/cron.log 2>&1 

processus exécutés sous Cron un environnement très limité, et je soupçonne que votre programme attend quelque chose dans l'environnement qui est pas là, ou est en cours d'exécution dans un répertoire qui ne permet pas d'écrire le fichier journal. La redirection ci-dessus vous dira immédiatement ce qui se passe.

+0

Je le change mais rien n'est connecté /tmp/cron.log –