Page 1 sur 1

Erreur fatale Cannot redeclare

Posté : 19 mai 2007, 16:39
par Victor BRITO
Salut à tous !

Je suis confronté à une erreur fatale que je découvre et que voici :
Fatal error: Cannot redeclare vbrfdate() (previously declared in C:\wamp\www\forums\inclusions\fonctions\fonctions.date.php:26) in C:\wamp\www\forums\inclusions\fonctions\fonctions.date.php on line 61
Voici le script incriminé (la ligne 26 correpond à la ligne function vbrfDate ($temps)).
<?php 
// Fonctions formatant la date et l'heure depuis le timestamp Unix

// Convertit le timestamp Unix en une date selon les paramètres adoptés
function vbrfDate ($temps)
{
  $lang = (isset ($donnees['langue']))? $donnees['langue']: VBRF_LANGUE;
  require (dirname (__FILE__).'/../../lang/'.$lang.'/lang.date.php');
  $format_date = str_split (VBRF_FORMAT_DATE);
  foreach ($format_date as $valeur)
  {
    if (preg_match ("/[a-z]/i", $valeur))
    {
      switch ($valeur)
      {
        case 'D':
          $date[] = $vbrf_date_jour_complet[date ($valeur, $temps)];
          break;
        case 'l':
          $date[] = $vbrf_date_jour_abrege[date ($valeur, $temps)];
          break;
        case 'S':
          $date[] = $vbrf_date_jour_ordinal[date ($valeur, $temps)];
          break;
        case 'F':
          $date[] = $vbrf_date_mois_complet[date ($valeur, $temps)];
          break;
        case 'M':
          $date[] = $vbrf_date_mois_abrege[date ($valeur, $temps)];
          break;
        default:
          $date[] = date ($valeur, $temps);
          break;
      }
    }
    else $date[] = $valeur;
  }
  $date_formatee = implode ('', $date);
  return $date_formatee;
} // Ligne 61

// Convertit le timestamp Unix en une heure selon les paramètres adoptés
function vbrfHeure ($temps)
{
  $heure = date (VBRF_FORMAT_HEURE, $temps);
  return $heure;
}
?>
Qu'est-ce qui peut bien clocher ?

Posté : 19 mai 2007, 18:04
par titerm
bah comme explicitement dit par le message d'erreur, ta fonction a déjà été définie dans le fichier fonctions.data.php en ligne 61. Soit par une double inclusion, soit véritablement définie 2 fois.

Posté : 19 mai 2007, 18:06
par Hubert Roksor
A priori rien dans le code que tu as posté. Essaie de relancer Apache, il y a peut-être un bug dans le cache d'opcode si tu en utilises un. Sinon ajoute ça à la ligne 25, peut-être inclues-tu le même fichier plusieurs fois ? C'est l'explication la plus probable.
if (function_exists('vbrfdate'))
{
   die('pas glop');
}

Posté : 21 mai 2007, 10:32
par Victor BRITO
Sur un autre fichier, j'incluais la fonction dans une boucle foreach (avec un simple include). En déplaçant l'inclusion juste avant ladite boucle, j'ai résolu le problème.