Erreur PHP incompréhensible

Résolu/Fermé
petitmarco Messages postés 44 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 19 décembre 2010 - 9 sept. 2008 à 14:40
petitmarco Messages postés 44 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 19 décembre 2010 - 9 sept. 2008 à 15:21
Bonjour,

Depuis que j'ai déplacé le site intranet de mon entreprise d'un PC à un autre, j'ai cette erreur qui apparaît


Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in C:\Program Files\EasyPHP 2.0b1\www\core\front\category.php on line 74

N'étant pas un as du PHP mais + un bidouiller, est ce que quelqu'un pourrait me porter secours.

6 réponses

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
9 sept. 2008 à 14:55
Salut

Apparement c'est un souci entre le code (un passage de parametre) et la configuration du serveur

Comme dis dans l'erreur deux solutions s'offrent a toi :

- Modifier la façon dont le parametre est passé

- Activer le mode de passage actuel grace au fichier INI

Je te conseille la premiere solution etant donné qu'il est aussi precisé que : "However, future versions may not support this any longer" Qui veut dire que dans les futures versions cette fonction ne sera plus du tout supportée !

Si tu ne sais pas trop comment faire colle ici le code qui ce trouve environ ligne 74 de category.php
0
petitmarco Messages postés 44 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 19 décembre 2010 7
9 sept. 2008 à 15:02
OK, merci de ta réponse voici le code PHP - (pour info, ce n'est pas moi qui l'ai écrit, c'est une source gratuite)

la ligne 74 est en gras en bas
$results=Pager_Wrapper_DB(&$db, $sSQL, $params);

------------------------
<?php

defined( 'IN_KB' ) or die( 'Restricted access' );

// ################### BACK END ######################
require_once 'Pager/Pager.php';
require_once 'Pager/Pager_Wrapper.php';
$id = ( empty($_GET['id']) ) ? 1 : (int)$_GET['id'];

// ################### CATEGORY NAME ######################
$path=$Category->breadcrumb($id,0);
$sSQL='SELECT cName FROM '.PREFIX.'categories WHERE cID='.$id;
$result=$db->query($sSQL);
$rs=$result->fetchRow();
$catTitle=$rs['cName'];
$result->free();

// ################### SUBCATEGORYS ######################
$sSQL='SELECT cID, parent_id, cName,cDescription FROM '.PREFIX.'categories WHERE cDisplay="Y" AND parent_id='. $id.' ORDER BY cORDER ASC, cName ASC';
$result = $db->query($sSQL);
$catrows = $result->numRows();
$category = array();
while ($row = $result->fetchRow())
{
$category[]=$row;
}
$result->free();
$template->assign('category',$category);
$template->assign('catrows',$catrows);

// ################### ARTICLES ######################

$sSQL="SELECT article_id FROM ".PREFIX."article2cat WHERE category_id=".$id;
$result = $db->query($sSQL);
$totalItems = (int)$result->numRows();
$count=1;
$aID='';
while ($row = $result->fetchRow())
{
if($count<$totalItems)
{
$comma=", ";
}
else
{
$comma="";
}
$aID.=$row['article_id']. $comma;
$count++;
}
if($aID<>"")
{
$sSQL='SELECT aID,aTitle,aShortDesc,aDate,aHits FROM '.PREFIX.'articles WHERE aID IN ('.$aID.') AND aDisplay="Y" ORDER BY aDate';
$params = array(
'mode' => 'Sliding',
'perPage' => $KB->settings['max_search'],
'delta' => 2,
'urlVar' => 'num',
'spacesBeforeSeparator' => '1',
'spacesAfterSeparator' => '1',
);
$results=Pager_Wrapper_DB(&$db, $sSQL, $params);
}

$template->assign('data', $results['data']);
$template->assign('maxPage', $results['page_numbers']['total']);
$template->assign('pageNum', $results['page_numbers']['current']);
$template->assign('numrows', $results['totalItems']);
$template->assign('links', $results['links']);

// ################### DISPLAY TEMPLATE ######################
$template->assign('breadcrumb', $path);
$template->assign('catTitle', $catTitle);
$template->assign('body', 'category.tpl');
?>
-------------------------------------------
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
9 sept. 2008 à 15:07
Effectivement il y a un passage par reference

$results=Pager_Wrapper_DB(&$db, $sSQL, $params);

tu le reconnais au & devant &$db

essai d'enlever le & et regarde si ça ne pose pas de probleme a la fonction Pager_Wrapper_DB sinon il faudra montrer son code aussi ;)
0
Bonjour

Il faut modifier la ligne pour remplacer par
results=Pager_Wrapper_DB($db, $sSQL, $params);


mais il faut aussi modifier la déclaration de la fonction Pager_Wrapper_DB dans Pager/Pager_Wrapper.php pour rajouter un '&' avant son 1er paramètre.

Il faut recommencer ça pour chaque appel de fonction avec un paramètre passé par référence (qui commence par &) : le & doit être dans la déclaration de la fonction, pas dans l'appel.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
petitmarco Messages postés 44 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 19 décembre 2010 7
9 sept. 2008 à 15:14
Merci de vos réponses, je vais essayer les deux et je reviens pour informer du résultats
0
petitmarco Messages postés 44 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 19 décembre 2010 7
9 sept. 2008 à 15:21
SUPER, la solution de "Mimiste" fonctionne, j'ai enlevé le &, et plus de message d'erreur, et le site fonctionne

Merci encore à vous
;-)
0