4 votes

Php écrit dans un fichier - vide ?

J'ai eu du mal à écrire une seule chaîne de caractères dans un fichier. J'utilise un code simple sous Slackware 13 :

$fp = fopen('/my/absolute/path/data.txt', 'w');
fwrite($fp, 'just a testing string...');
fclose($fp);

Le fichier est créé (s'il n'est pas déjà créé) mais il est vide ! Le répertoire dans lequel ce fichier est écrit appartient à l'utilisateur et au groupe d'apache (daemon.daemon) et a les permissions 0777. Cela ne m'est jamais arrivé auparavant. Je suis curieux de savoir pourquoi je ne suis pas capable d'écrire dans le fichier ?

Merci d'avance.

7voto

Boris Guéry Points 23606

Essayez $ df -h

Cela signifie probablement que votre disque est plein.

2voto

Mimikry Points 114

À mon avis, vous pourriez vérifier les valeurs de retour :

$fp = fopen('/my/absolute/path/data.txt', 'w');

// $fp -> manual: "Returns a file pointer resource on success, or FALSE on error."
if ($fp) {
    $bytes_written = fwrite($fp, 'just a testing string...');

    if ($bytes_written) {
        echo "$bytes_written bytes written!\n";
    } else {
        echo "Error while writing!\n"
    }

    $success = fclose($fp);

    if ($success) {
         echo "File successfully closed!\n";
    } else {
         echo "Error on closing!\n";
    }
} else {
    echo "No filepointer ressource!\n";
}

1voto

Mārtiņš Briedis Points 7934

Je suggère d'utiliser file_put_conents($file_name, $file_cotents) ; Et pour récupérer le contenu : file_get_contents($file_name) ;

Le code semble également plus propre.

http://php.net/manual/en/function.file-put-contents.php y http://www.php.net/manual/en/function.file-get-contents.php

1voto

Lèse majesté Points 4354

Il se peut que quelque chose arrive au script/fichier avant que le fichier ne soit fermé. Vérifiez s'il y a d'autres processus qui essaient d'accéder au fichier (vous pouvez utiliser la fonction lsof ). Essayez également d'écrire dans un nouveau fichier pour voir si la même chose se produit.

Vérifiez également la valeur de retour sur fclose() pour s'assurer que le fichier est fermé avec succès.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X