Fread(): Length parameter must be greater than 0

Résolu
mikesunshine59 Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -  
mikesunshine59 Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai le message : fread(): Length parameter must be greater than 0
Lorsque que je lance mon PHP ci-dessous :

<?php
// Paramtres de connexion FTP
$ftp_server = "*************"; // Address of FTP server.
$ftp_user_name = "*************"; // Username
$ftp_user_pass = "*************"; // Password
        
// Lancement page de connexion au FTP
$conn_id = ftp_connect($ftp_server);
        
// Connexion au FTP
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);ftp_pasv($conn_id, true);
  
$file = './Pomme.csv';
if ($config = fopen($file, 'r+')) // Ouverture du fichier
{
if ($content = fread($config, filesize($file))) // Lecture du fichier (le pointeur se retrouve à la fin)
{
// Modification de la structure du fichier
$content = str_replace('",', ',', $content);
$content = str_replace(',"', ',', $content);
$content = str_replace('"', '', $content);
    
rewind($config); // on remet le pointeur au début du fichier
ftruncate($config, 0); // on efface le contenu
fwrite($config, $content); // on écrit le nouveau contenu
fclose($config);
}
}

// Vérification des modifications 
if (!$content) { 
echo "KO"; 
} else { 
echo "OK"; 
}    

// Fermeture de la connexion FTP. 
ftp_quit($conn_id);
?>


Pouvez-vous m'aider ? (Le message d'erreur arrive quand parfois le fichier est vide)
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, merci de toujours indiquer sur quelle ligne se produit un message d'erreur.
pourquoi veux-tu lire le contenu d'un fichier vide?
il n'est pas autorisé de faire fread() avec une longueur de moins de 1 octet.
je te suggère de tester filesize($file) avant de faire fread().
1
mikesunshine59 Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

Le fichier provient d'un résultat d'une requete SQL.
Et parfois la requete est vide.
Le fichier généré est donc vide dans ce cas.

Peux-tu me dire comment on fait dans le PHP ci-dessus pour ne pas avoir ce message quand le fichier est vide s'il te plait ?

Merci pour ton aide.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > mikesunshine59 Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
tu pourrais remplacer les lignes 17 à 28 par:
if ( filesize($file)>0){
if ($content = fread($config, filesize($file))) // Lecture du fichier (le pointeur se retrouve à la fin)
{
// Modification de la structure du fichier
$content = str_replace('",', ',', $content);
$content = str_replace(',"', ',', $content);
$content = str_replace('"', '', $content);
    
rewind($config); // on remet le pointeur au début du fichier
ftruncate($config, 0); // on efface le contenu
fwrite($config, $content); // on écrit le nouveau contenu
fclose($config);
}
}
else{
   echo "Fichier vide.";
}
0
mikesunshine59 Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup yg_be pour ton aide. Cela fonctionne très bien.

:)
0