[RESOLU] erreur php sur mon site , à l'aide svp

Eléphanteau du PHP | 11 Messages

12 déc. 2012, 17:03

Bonjour , voici l'erreur que je viens d'avoir recement sur mon site :

Warning: fread() [function.fread]: Length parameter must be greater than 0. in /mnt/162/sdb/a/c/countrywesterntroup/compteur.php on line 33


Voici donc le code source de la page en question , pouvez vous m'aider car je comprends pas ce que je dois faire , merci d'avance ! ( ps : la ligne 33 ci dessous est celle ci :
$resultat1 = fread ($tmp, filesize ("datacount.php"));
<?php 

function ecrire_lien()
{
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$nomadr = $path_parts['basename'];

include("datacount.php");
$continu=1;
$nb_lien = count($Adresse);
for($i = 0; $i < $nb_lien; $i++) {
 if ($Adresse[$i]==$nomadr) {      
   $Compteur[$i]++;
   $resultat2 = fopen("datacount.php", "w+");
   $ligneajout = "<?php \n";
  for($j = 0; $j < $nb_lien; $j++) { 
   $ligneajout .= "\$Adresse[] = \"".$Adresse[$j]."\";\n \$Compteur[] = ".$Compteur[$j].";\n ";      
  }
   $ligneajout .=  "?>";
   fputs ($resultat2, $ligneajout);  
   fclose($resultat2); 
  $continu=0;
  break;  
 }
 else
 {
  $continu=1;
 }
}

if ($continu==1) {
   $tmp = fopen("datacount.php", "r");
   $resultat1 = fread ($tmp, filesize ("datacount.php"));
   fclose($tmp);
   $ligneajout = "\$Adresse[] = \"".$nomadr."\";\n \$Compteur[] = 1;\n ?>";
   $resultat2 = fopen("datacount.php", "w+");
   $ligneajout2 = str_replace("?>", $ligneajout, $resultat1);
   fputs ($resultat2, $ligneajout2);
   fclose($resultat2);
  }


}  // fin fonction ecrire_lien()

?>
Modifié en dernier par jerlotrie le 12 déc. 2012, 17:37, modifié 3 fois.

Mammouth du PHP | 702 Messages

12 déc. 2012, 17:09

edit ton code et utilise la coloration syntaxique stp il sera plus facile de t'aider ainsi.

Mammouth du PHP | 702 Messages

12 déc. 2012, 17:12

on peut voir le fichier compteur.php ?

Eh bien ... Ma conjecture du message d'erreur serait que compteur.php est vide. Par conséquent, fread () ne peut pas lire quelque chose de lui.

Eléphanteau du PHP | 11 Messages

12 déc. 2012, 17:14

on peut voir le fichier compteur.php ?

Eh bien ... Ma conjecture du message d'erreur serait que compteur.php est vide. Par conséquent, fread () ne peut pas lire quelque chose de lui.

ok mais le code ci dessus correspond au fichier compteur ! donc je comprends pas ce que vous me demandez ?

Mammouth du PHP | 702 Messages

12 déc. 2012, 17:18

pardon je voulais dire le fichier datacount.php peut on le voir ?

je pense qu'il est vide.

Eléphanteau du PHP | 11 Messages

12 déc. 2012, 17:27

pardon je voulais dire le fichier datacount.php peut on le voir ?

je pense qu'il est vide.
voila le fichier datacount.php :
<?php 
$Adresse[] = "index.php";
 $Compteur[] = 118;
 $Adresse[] = "indexguirlandes.php";
 $Compteur[] = 2;
 ?>

Mammouth du PHP | 702 Messages

12 déc. 2012, 17:29

essaye de mettre le chemin absolu vers ce fichier.

Eléphanteau du PHP | 11 Messages

12 déc. 2012, 17:32

sinon j'ai ce fichier code en rapport avec le compteur.php , c'est le fichier nommé indexguirlandes.php dont il est fait mention ci dessus :
<?php require"mes_includes/liens.php";
include ("total.php"); // contient les fonction de lecture des compteur
include ("nbconnected.php"); // procédure d'écriture et de test des noimbre de connectés.
include ("compteur.php");  //contient la fonction ecrire_lien
ecrire_lien(); // incrémenter le compteur pour la page encours
?>
<?php
if(file_exists("visiteurs.txt"))
   {
print "";
   }
else
   {
$fp=fopen("visiteurs.txt","a");
fputs($fp,"0");
fclose($fp);
   }
?>
<?

if (isset($cool_cookie) && $cool_cookie =="Deja_visite"){
	$fichier="visiteurs.txt";
	$fp=fopen("$fichier","r+");
	$hits=fgets($fp,10);
$v="Nombre de visites" ;  $w= $hits; 


} else {
setcookie("cool_cookie","Deja_visite",time()+2*3600,"");

  
	$fichier="visiteurs.txt";
	$fp=fopen("$fichier","r+");
	$hits=fgets($fp,10);
	$hits++;
	fseek($fp,0);
	fputs($fp,$hits);
	fclose($fp);
	$count++;
	$v="Nombre de visites" ;  $w= $hits; 
} 

?>
Modifié en dernier par jerlotrie le 12 déc. 2012, 17:39, modifié 1 fois.

Eléphanteau du PHP | 11 Messages

12 déc. 2012, 17:33

essaye de mettre le chemin absolu vers ce fichier.
est ce le fichier code contenu dans le message ci dessus que vous souhaitez voir ? qu appelez vous le chemin absolu ? je debute en php , désolé !


sinon voila l'adresse du site en question :
http://countrywesterntroup.free.fr , rajoute ceci : /datacount.php peut etre pour avoir le chemin absolu !
Modifié en dernier par jerlotrie le 12 déc. 2012, 17:44, modifié 1 fois.

Mammouth du PHP | 702 Messages

12 déc. 2012, 17:41

regarde le manuel
string fread ( resource $handle , int $length )
fread() lit jusqu'à length octets dans le fichier référencé par handle. La lecture s'arrête lorsqu'une des conditions suivantes apparaît :

length octets ont été lus
la fin du fichier est atteinte
un paquet devient disponible ou le temps socket timeout est passé (pour les flux réseau)
si le flux est lu depuis le buffer, et qu'il ne représente pas un fichier plein, alors au moins une lecture d'un nombre d'octets équivalent à la taille du bloc (habituellement 8192) est réalisée ; suivants les données du buffer précédent, la taille des données retournées peut être supérieure à la taille du bloc.
la clairement ton fichier semble vide.

est tu sûr que le fichier que tu veux lire contient bien les informations ? La clairement il semble vide. en fait ton fichier semble faire 0octets.

d'ou le message d'erreur.

Donc soit le lien vers le fichier est mauvais, soit le fichier est vide, soit...

Eléphanteau du PHP | 11 Messages

12 déc. 2012, 17:46

regarde le manuel
string fread ( resource $handle , int $length )
fread() lit jusqu'à length octets dans le fichier référencé par handle. La lecture s'arrête lorsqu'une des conditions suivantes apparaît :

length octets ont été lus
la fin du fichier est atteinte
un paquet devient disponible ou le temps socket timeout est passé (pour les flux réseau)
si le flux est lu depuis le buffer, et qu'il ne représente pas un fichier plein, alors au moins une lecture d'un nombre d'octets équivalent à la taille du bloc (habituellement 8192) est réalisée ; suivants les données du buffer précédent, la taille des données retournées peut être supérieure à la taille du bloc.
la clairement ton fichier semble vide.

est tu sûr que le fichier que tu veux lire contient bien les informations ? La clairement il semble vide. en fait ton fichier semble faire 0octets.

d'ou le message d'erreur.

Donc soit le lien vers le fichier est mauvais, soit le fichier est vide, soit...
en fait c'est un compteur php pour comptabilisé le nombre de visiteurs du site , ce compteur apparait sur toutes les pages du site et fonctionnait sans probleme encore recement ! donc pouvez vous m'aider pour corriger ce qu'il ne vas pas et faire en sorte que cela fonctionne ? cordialement

Mammouth du PHP | 702 Messages

12 déc. 2012, 17:48

bien je t'ai dis le message d'erreur, après savoir pourquoi ce fichier est vide je ne peux pas te dire...
regarde si le fichier que tu inclu est bien rempli ... La il semble vide.

Eléphanteau du PHP | 11 Messages

12 déc. 2012, 17:50

bien je t'ai dis le message d'erreur, après savoir pourquoi ce fichier est vide je ne peux pas te dire...
regarde si le fichier que tu inclu est bien rempli ... La il semble vide.

merci encore pour votre patience et votre sympathie , mais helas je debute en php et je sais pas de quel fichier vous parlez , le compteur.php ou le database.php ou un autre , bref je ne comprends pas concretement quel est le nom du fichier qui semble vide

Mammouth du PHP | 702 Messages

12 déc. 2012, 17:59

ok, peut être que ton fichier compteur.php, il garde en mémoire dans le cache la taille du fichier, essai de rajouter
 clearstatcache();
juste avant la ligne 33

Eléphanteau du PHP | 11 Messages

12 déc. 2012, 18:04

ok, peut être que ton fichier compteur.php, il garde en mémoire dans le cache la taille du fichier, essai de rajouter
 clearstatcache();
juste avant la ligne 33

helas cela ne fonctionne pas mieux :

Warning: fread() [function.fread]: Length parameter must be greater than 0. in /mnt/162/sdb/a/c/countrywesterntroup/compteur.php on line 34