2011-02-06 3 views
4

J'ai eu du mal à écrire une seule chaîne dans un fichier. J'utilise juste un simple code sous Slackware 13:Php écrit dans un fichier - vide?

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

Le fichier est créé (si elle est pas déjà créé) mais il est vide! Le répertoire dans lequel ce fichier est écrit appartient à l'utilisateur & du groupe apache (daemon.daemon) et possède les permissions 0777. Cela ne m'est jamais arrivé auparavant. Je suis curieux de savoir quelle est la raison pour laquelle je ne suis pas capable d'écrire dans le fichier?

Merci d'avance.

+2

vérifier les logs apache –

+0

Le code lui-même est définitivement correct. – Raffael

+3

Essayez * $ df -h * :-) –

Répondre

6

Essayez $ df -h

Cela signifie probablement que votre disque est plein.

+1

Prise impressionnante, de l'expérience amère je suppose? :) –

+0

@AmigableClarkKant, :) –

2

À mon avis, vous pouvez 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"; 
} 
1

Peut-être quelque chose se passe au script/fichier avant que le fichier est fermé. Vérifiez s'il existe d'autres processus qui tentent d'accéder au fichier (vous pouvez utiliser 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 vous assurer que le fichier est en cours de fermeture.