2010-12-12 4 views
1

$is_file_1 et $is_file_2 sont tous les deux faux mais rien n'est inséré dans le fichier errlog-Batch.txt que j'ai défini. Je ne sais pas ce que je fais mal car aucune erreur de script est émisfwrite() rien écrit, entrées vides

$dirchk1 = "/temp/files/" . $ch_id . "/" . $data[0]; 
$dirchk2 = "/temp/files/" . $ch_id . "/" . $data[1]; 

$is_file_1 = is_file($dirchk1); 
$is_file_2 = is_file($dirchk2); 

$missing_n == 'file does not exist : ' . '".$data[0]."' . "\r"; 
$missing_s == 'file does not exist : ' . '".$data[1]."' . "\r"; 
$renfile_n == 'file can not be move file : ' . '".$data[0]."' . "\r"; 
$renfile_s == 'file can not be move file : ' . '".$data[1]."' . "\r"; 

$handle = @fopen("/rec/" . "errlog-" . $batchid . ".txt", "a"); 
if($is_file_1 == FALSE) { 
    fwrite($handle, $missing_n . "\n"); 
} elseif ($is_file_2 == FALSE) { 
    fwrite($handle, $missing_s . "\n"); 
} 
@fclose($handle); 
//exit(); 
+2

Et si vous supprimez le '@' s? –

Répondre

3

Vous utilisez == en place de = dans:

$missing_n == 'file does not exist : ' . '".$data[0]."' . "\r"; 
$missing_s == 'file does not exist : ' . '".$data[1]."' . "\r"; 
$renfile_n == 'file can not be move file : ' . '".$data[0]."' . "\r"; 
$renfile_s == 'file can not be move file : ' . '".$data[1]."' . "\r"; 

En conséquence, les quatre variables restent non défini. Et lorsque vous essayez de les écrire dans le fichier ajouté avec une nouvelle ligne, tout ce que vous voyez est un saut de ligne. Cela suppose que votre fopen réussit.

Vous doit toujours toujours vérifier la valeur de retour de fopen avant d'aller de l'avant et de faire file-io.

1

Outre l'utilisation du mauvais opérateur, vous pouvez également utiliser error_log au lieu de votre propre fonction journal d'erreur:

$dirchk1 = "/temp/files/" . $ch_id . "/" . $data[0]; 
$dirchk2 = "/temp/files/" . $ch_id . "/" . $data[1]; 

if (!is_file($dirchk1)) { 
    error_log(sprintf('file does not exist: "%s"', $data[0]), 3, "/rec/errlog-$batchid.txt"); 
} 
if (!is_file($dirchk2)) { 
    error_log(sprintf('file does not exist: "%s"', $data[1]), 3, "/rec/errlog-$batchid.txt"); 
}