Fread(): El parámetro de longitud debe ser mayor que 0

Resuelto
mikesunshine59 Mensajes publicados 75 Estado Miembro -  
mikesunshine59 Mensajes publicados 75 Estado Miembro -
Hola,

Tengo el mensaje: fread(): Length parameter must be greater than 0
Cuando ejecuto mi PHP de abajo:

<?php // Parámetros de conexión FTP $ftp_server = "*************"; // Dirección del servidor FTP. $ftp_user_name = "*************"; // Nombre de usuario $ftp_user_pass = "*************"; // Contraseña // Inicio de la página de conexión al FTP $conn_id = ftp_connect($ftp_server); // Conexión al 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+')) // Apertura del archivo { if ($content = fread($config, filesize($file))) // Lectura del archivo (el puntero se sitúa al final) { // Modificación de la estructura del archivo $content = str_replace('",', ',', $content); $content = str_replace(',"', ',', $content); $content = str_replace('"', '', $content); rewind($config); // retornamos el puntero al principio del archivo ftruncate($config, 0); // borramos el contenido fwrite($config, $content); // escribimos el nuevo contenido fclose($config); } } // Verificación de las modificaciones if (!$content) { echo "KO"; } else { echo "OK"; } // Cierre de la conexión FTP. ftp_quit($conn_id); ?>


¿Puedes ayudarme? (El mensaje de error aparece cuando a veces el archivo está vacío)

1 respuesta

  1. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Ambassadeur 1 588
     
    Buenas noches, gracias por indicar siempre en qué línea se produce un mensaje de error.
    ¿Por qué quieres leer el contenido de un archivo vacío?
    No se permite usar fread() con una longitud de menos de 1 byte.
    Te sugiero que pruebes filesize($file) antes de hacer fread().
    1
    1. mikesunshine59 Mensajes publicados 75 Estado Miembro
       
      Buenas noches,

      El archivo proviene de un resultado de una consulta SQL.
      Y a veces la consulta está vacía.
      El archivo generado está vacío en este caso.

      ¿Puedes decirme cómo hacer en el PHP de arriba para no tener este mensaje cuando el archivo está vacío, por favor?

      Gracias por tu ayuda.
      0
      1. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588 > mikesunshine59 Mensajes publicados 75 Estado Miembro
         

        if ( filesize($file)>0){ if ($content = fread($config, filesize($file))) // Lectura del archivo (el puntero se encuentra al final) { // Modificación de la estructura del archivo $content = str_replace('",', ',', $content); $content = str_replace(',"', ',', $content); $content = str_replace('"', '', $content); rewind($config); // se vuelve a colocar el puntero al inicio del archivo ftruncate($config, 0); // se borra el contenido fwrite($config, $content); // se escribe el nuevo contenido fclose($config); } } else{ echo "Archivo vacío."; }
        0
    2. mikesunshine59 Mensajes publicados 75 Estado Miembro
       
      Muchas gracias yg_be por tu ayuda. Funciona muy bien.

      :)
      0