Je suis entrain de crée un site joomla (2.5.9) sur un Wampserver 2.2 (PHP 5.4.3, MySQL 5.5.24, Apache 2.2.22). Sur mon serveur, je possède plusieurs sites web, tous avec du Joomla 2.5.9. Sur les autres sites, je n'ai pas de soucis. Donc je pense que ce n'est pas lié à l'hébergeur mais peut-être plutôt à un paramétrage de wamp.
Pouvez-vous svp m'aider à solutionner le problème ?
Après avoir installé wampserver (voir plus haut dans le post la config), j'ai voulu accéder à la page d'accueil de mon site. Je n'ai pas pu car mon navigateur firefox m'indique un message d'erreur me disant qu'il y a un problème d'encodage de contenu avec un bouton réessayer sous le message. Lorsque je clique dessus, j'accède bien a la page d'accueil de mon site mais avec plein de message d'erreur php (alors que sur wamp display errors est décoché ainsi que display starup errors).
A titre d'exemple ci-dessous un message d'erreur.
Strict standards: Only variables should be assigned by reference in C:\wampserver\www\mydomain.fr\modules\mod_highlighter_gk4\gk_classes\gk.source.joomla.php on line 84
Je ne suis pas tout-à-fait d'accord sur le terme « incompatibilité » de PHP 5.4.x. Je dirais plutôt que PHP 5.4.x est plus strict sur les erreurs d'écriture de code et ce qui passait - plus ou moins bien - avant, ne passe plus avec PHP 5.4.x
Prenons par exemple une ligne de code tout ce qui semble le plus normal pour PHP avant 5.4.0
Cette ligne génère l'erreur avec PHP 5.4.x : Strict Standards: Only variables should be passed by reference in ...www\mon_site\index.php on line 665 A priori, rien de bizarre, ni d'insolite, ni même d'extraordinaire, rien que du code classique, normal. Allons voir la fonction fonction replace_censure :
function replace_censure(&$texte, $censure=true){...
Ah ! Le premier paramètre est passé par référence (& devant la variable), et non pas par valeur. La fonction va chercher à remplacer (passage par référence) non pas l'élément de tableau $messages_reponse[$i] mais la fonction trim($messages_reponse[$i]) et ce n'est pas autorisé, bien que ça fonctionne (plus ou moins bien).
Ce comportement tout à fait légitime ne date pas d'hier. Il a été introduit en PHP 5.0.5 afin d'éviter des corruptions mémoires. On peut certainement mieux comprendre ce risque en se souvenant de la différence significative entre les pointeurs et les références du C.
Je parlais d'incompatibilité dans le sens ou le script n'étant pas bien développé, il ne fonctionnera pas normalement sous une version propre de PHP
PHP 5.2 étant très largement utilisé par les hébergeur et beaucoup plus permissif, beaucoup de développeurs indiquent une "compatibilité" (comprendre un fonctionnement sans affichage d'erreur) avec de vieilles versions de PHP
Maintenant, il va de soit qu'un développement propre et/ou une remise à jour des scripts et thèmes permettent de rétablir un fonctionnement normal