2010-01-17 5 views
0

Voici une classe simple de base de données, ainsi sa part d'une classe, je dépouillé tout à l'exception des parties liées à ma question. Fondamentalement, il me permettra de construire un fichier avec toutes les requêtes qui ont été exécutées sur une page de chargement avec le temps qu'ils ont pris, l'ordre dans lequel ils sont, le nombre total, puis aussi le SQL réel qui a été exécuté. C'est très bien mais j'ai des problèmes. Je ne peux pas à écrire dans le fichier, vous pouvez voir ci-dessous que j'imprimer à l'écran la valeur de sss $, ce qui est la valeur qui doit être écrit dans le fichier. En PHP, j'ai un rapport d'erreurs défini pour montrer tout et je ne reçois aucune erreur d'écriture ou quoi que ce soit, il n'écrit pas dans le fichier, peut-être que j'ai le dossier sur le mauvais dossier mais je ne suis pas sûr.Impossible d'obtenir PHP pour écrire dans un fichier

Alors, quelle serait une bonne façon de définir un chemin de fichier dans le fichier journal et aussi pour en faire écrire? SI il ne peut pas trouver le fichier maintenant, devrais-je voir une sorte d'erreur?

<?PHP 
class Database 
{ 
    public $debug = true; 
    public $query_count = 0; 
    public $debug_file = "debug.sql"; 

    public function query($sql){ 
     //start timer stuff for debug logger 
     list($usec, $sec) = explode(" ",microtime()); 
     $time_start = ((float)$usec + (float)$sec); 

     //run mysql query 
     $result = mysql_query($sql); 


     ///debug  
     list($usec, $sec) = explode(" ",microtime()); 
     $time_end = ((float)$usec + (float)$sec); 
     $time = $time_end - $time_start; 
     if($this->debug){ 
      $this->query_count ++; 
      $f = fopen($this->debug_file, "a"); 
      $sss = "# ".$this->query_count."\n ".$time." sec \n\n".$sql."\n#-------------------------------------------------------------------------\n\n"; 

      // I print to screen just for test to see what should be wrriten to the file 
      echo $sss; 

      fputs($f, $sss, strlen($sss)); 
      fclose($f); 
     } 
     //end debug 
    } 
} 
?> 
+0

code semble bien. Vous devriez recevoir un avertissement si le fichier ne peut pas être trouvé ou ouvert. Quel est le réglage de error_reporting? Avez-vous des autorisations pour écrire dans le répertoire en cours? –

Répondre

3

D'abord, j'utiliser file_put_contents (http://php.net/manual/en/function.file-put-contents.php), il regroupe essentiellement tous les appels en un seul et peut aider à éviter les erreurs.

Si l'instruction echo fonctionne vraiment, je vérifierais toutes les erreurs écrites dans le fichier journal php, et vérifiez vos paramètres dans php.ini et que vous consignez les avertissements.

En outre, vérifiez la valeur de retour de l'appel fopen() (il ne devrait pas être faux) ... peut-être son échec?

+0

Merci, c'est beaucoup plus agréable, il est également écrit, semble que le fichier était dans un dossier différent alors je m'attendais, je dois définir un chemin d'accès à enregistrer sinon il continuera à construire des fichiers dans les nouveaux répertoires – JasonDavis

+0

Ah - ouais ont eu similaire les choses se passent avant moi, cool, bonne chance pour aller de l'avant. –

Questions connexes