Menu

Fread(): Length parameter must be greater than 0 [Résolu]

mikesunshine59 73 Messages postés lundi 22 janvier 2018Date d'inscription 24 février 2018 Dernière intervention - 4 févr. 2018 à 19:40 - Dernière réponse : mikesunshine59 73 Messages postés lundi 22 janvier 2018Date d'inscription 24 février 2018 Dernière intervention
- 4 févr. 2018 à 21:24
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)
Afficher la suite 

Votre réponse

4 réponses

yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 4 févr. 2018 à 20:29
+1
Utile
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().
Cette réponse vous a-t-elle aidé ?  
mikesunshine59 73 Messages postés lundi 22 janvier 2018Date d'inscription 24 février 2018 Dernière intervention - 4 févr. 2018 à 20:39
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.
yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention > mikesunshine59 73 Messages postés lundi 22 janvier 2018Date d'inscription 24 février 2018 Dernière intervention - 4 févr. 2018 à 21:00
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.";
}
mikesunshine59 73 Messages postés lundi 22 janvier 2018Date d'inscription 24 février 2018 Dernière intervention - 4 févr. 2018 à 21:24
Merci beaucoup yg_be pour ton aide. Cela fonctionne très bien.

:)
Commenter la réponse de yg_be