2010-05-14 7 views
0

J'essaie actuellement d'écrire dans un fichier txt avec PHP, je l'ai trouvé ce petit script:fwrite txt fichier

<?php 
$filename = 'testFile.txt'; 
$somecontent = "Add this to the file\n"; 

if (is_writable($filename)) { 

    if (!$handle = fopen($filename, 'a')) { 
     echo "Cannot open file ($filename)"; 
     exit; 
    } 

    if (fwrite($handle, $somecontent) === FALSE) { 
     echo "Cannot write to file ($filename)"; 
     exit; 
    } 

    echo "Success, wrote ($somecontent) to file ($filename)"; 
    fclose($handle); 

} 

else { 
    echo "The file $filename is not writable"; 
} 
?> 

Je reçois un succès message, mais rien est écrit le fichier. Même si je supprime le fichier txt je reçois toujours le message de succès

Est-ce que quelqu'un sait comment résoudre une situation comme celle-ci?

+1

Si vous supprimez le fichier, est-il recréé après avoir vu le message de réussite? –

+1

Aussi, essayez de "echo fwrite ($ handle, $ somecontent)", il devrait imprimer le nombre d'octets écrits. –

+0

Le fichier n'est pas recréé après le message de réussite. Quand je "echo fwrite ($ handle, $ somecontent)" j'ai 21 octets. – timkl

Répondre

2

Votre code fonctionne parfaitement bien. Cependant, notez que la vérification is_writable échouera si le fichier n'existe pas encore.

Si vous l'exécutez via un serveur Web, assurez-vous de ne pas afficher une réponse mise en cache.

+1

(juste pensé à la réponse étant mis en cache moi-même) –

+0

J'exécute le script via un serveur web - désolé d'être un n00b mais comment éviter d'afficher une réponse en cache? – timkl

+0

Envoie les en-têtes qui empêchent la mise en cache ou, si c'est juste pour vous, vous pouvez simplement le recharger avec CTRL + F5 – ThiefMaster

2

Votre première vérification avec is_writable n'est pas utile car elle échoue si le fichier n'existe pas. Lorsque vous utilisez fopen avec le paramètre "a" vous apportez au fichier s'il existe sinon il va en créer un nouveau.

Si vous voulez vérifier si le fichier existe, vous pouvez avec file_exists (http://php.net/manual/en/function.file-exists.php), mais ce n'est pas vraiment nécessaire.

Avec votre code, si vous supprimez le fichier, vous devriez obtenir une erreur "le fichier n'est pas inscriptible" ... êtes-vous sûr d'avoir exactement ce code?

Sinon, j'ai essayé le code et il fonctionne très bien (sans le premier if).

+0

Le code OP (y compris le contrôle 'is_writable') est fronm l'exemple officiel' fwrite' sur php.net: http: //www.php.net/manual/fr/function.fwrite.php. Est-ce que leur code est incorrect? – amindfv

+0

@amindfv: il n'est pas techniquement incorrect, mais il utilise 'is_writable' pour vérifier l'existence d'un fichier, ce qui n'est pas la fonction à utiliser. 'is_writable' échouera en effet si le fichier n'existe pas, mais ce n'est pas le comportement souhaité ici. Donc, oui, leur code est "fonctionnellement incorrect". – nico