Erreur sur script php

Eléphanteau du PHP | 13 Messages

07 août 2024, 01:26

bonjour,
mon hébergeur infomaniak ma bloqué mon accès avec cette erreur:
monsite.fr [Wed Aug 07 00:31:40.958049 2024] [-:error] [pid 234716:tid 139686854924032] [client 10.4.23.29:0] FastCGI: server "/home/clients/xxx/.config/apache/monsite.fr/.fpm/php5.external" stderr: ures.ch/import/import-prix-qte.php on line 63PHP message: PHP Warning: fgetcsv() expects parameter 1 to be resource, bool given in
mon script php ouvre et copie un csv et ensuite réordonne les colonne pouvez-vous me dire ce qui ne vas pas dans mon fichier?
cela a bien fonctionné pendant plus de 1 mois.

voici le script
<?php

$ftp_server="ftp";
$ftp_user_name="xxx";
$ftp_user_pass="xxx";
 
// Création de la connexion
$conn_id = ftp_connect("$ftp_server");
 
// Authentification avec nom de compte et mot de passe
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");
 
// Vérification de la connexion
if ((!$conn_id) || (!$login_result))
{
    echo "La connexion FTP a échoué!";
    echo "Tentative de connexion à $ftp_server avec $ftp_user_name";
    die;
}
         
echo "Connecté à $ftp_server, avec $ftp_user_name";
 
 
$file = '/out/portal_1817556.csv';
$newfile = 'prix-qte.csv';  // on suppose que le script est a la racine du site web


// Tente de charger le fichier $file
if ( ftp_get($conn_id, $newfile, $file, FTP_BINARY))

{
    echo "Chargement avec succès du fichier $file\n </br>";
}
else
{
    echo "Il y a eu un problème lors du chargement du fichier $file\n </br>";
}
 
// Fermeture de la connexion et du pointeur de fichier
ftp_close($conn_id);

sleep(3); // attendre 3secondes

 /* Fichier à supprimer */
   $fichier = "termine-prix-qte.csv";

 if( file_exists ($fichier))
     unlink( $fichier ) ;

$filename = "prix-qte.csv";
$fileRead = fopen($filename, 'r');
$fileWrite = fopen("termine-prix-qte.csv", "w");
$sep = "|";

  if (!$fileRead || !$fileWrite) {
    echo "Erreur d'ouverture du fichier de lecture et/ou d'écriture avec $filename.";
   
  }
  
      
  fputs($fileWrite,  $data= chr(0xEF) . chr(0xBB) . chr(0xBF));

  while (($data = fgetcsv($fileRead, 0, "|")) !== FALSE) {

  
  
  
   // le commencement des colonne est 0]);
   
   fputcsv($fileWrite, [$data[0],  $data[3], $data[4]], '|');
	
	}

  fclose($fileWrite);
  fclose($fileRead);

echo "copie terminée merci"; 
  ?>

merci d'avance pour votre aide

Mammouth du PHP | 2703 Messages

07 août 2024, 01:32

if (!$fileRead || !$fileWrite) {
echo "Erreur d'ouverture du fichier de lecture et/ou d'écriture avec $filename.";

}
cela rentre dans ce if ?

Eléphanteau du PHP | 13 Messages

07 août 2024, 01:37

j'ai aussi cela dans les logs de mon hébergeur:
monsite.fr [Tue Aug 06 23:31:08.022510 2024] [-:warn] [pid 115273:tid 139685003253504] [client 10.4.23.29:0] FastCGI: too much stderr received from server "/home/clients/f9045810e30c81967a126787c70211ef/.config/apache/monsite.fr/.fpm/php5.external", increase FCGI_SERVER_MAX_STDERR_LINE_LEN (1023) and rebuild or use "\n" to terminate lines
et la ligne 63 c'est ici: while (($data = fgetcsv($fileRead, 0, "|")) !== FALSE) {

Eléphanteau du PHP | 13 Messages

07 août 2024, 01:48

Merci pour ta réponse, c'est pour faire un controle si le fichier s'ouvre. j'ai fait faux?

Avatar du membre
Mammouth du PHP | 1609 Messages

07 août 2024, 11:27

Le message d'erreur dit que fgetcsv reçoit un boléen, on en déduit donc que le fopen a du retourner false et que du coups le script a du passer dans le if !$fileRead mais comme il sagit juste d'un echo, ça ne stoppe pas le script et ça génère cette erreur.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 13 Messages

07 août 2024, 11:47

ok merci pour ton retour, du coup je devrais mettre quoi un exit?

Avatar du membre
Mammouth du PHP | 1609 Messages

07 août 2024, 13:36

Un exit c'est bien.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 13 Messages

07 août 2024, 19:48

ok merci donc j'ai mis ceci est-ce bien correct?
if ( ftp_get($conn_id, $newfile, $file, FTP_BINARY))

{
    echo "Chargement avec succès du fichier $file\n </br>";
}
else
{
    echo "Il y a eu un problème lors du chargement du fichier $file\n </br>";
	exit;
}
 
// Fermeture de la connexion et du pointeur de fichier
ftp_close($conn_id);

sleep(3); // attendre 3secondes

 /* Fichier à supprimer */
   $fichier = "termine-prix-qte.csv";

 if( file_exists ($fichier))
     unlink( $fichier ) ;

$filename = "prix-qte.csv";
$fileRead = fopen($filename, 'r');
$fileWrite = fopen("termine-prix-qte.csv", "w");
//$sep = "|";

  if (!$fileRead || !$fileWrite) {
    echo "Erreur d'ouverture du fichier de lecture et/ou d'écriture avec $filename.";
	exit;
   
 }

Mammouth du PHP | 2703 Messages

07 août 2024, 20:17

il faut surtout comprendre pourquoi cela rentre dans ce if, parce mettre un exit ne va pas refaire marcher le script.