Zencart : cannot redeclare class …

Pour éviter les angoisses et la perte de temps, il suffit de vérifier que vous n’avez pas trop de script php sur un même emplacement.

Ce qui peut arriver lorsque vous conservez une sauvegarde d’un script modifié avec un nom légèrement différent avec la même extension php.

Exemple vécu :
dans le répertoire modules/pages/checkout_shipping vous faire une modif dans header_php.php, vous conserver la version initiale sous le nom header_php-original.php.
Et vous avez l’erreur “PHP fatal error : cannot redeclare class order …”
Parce que Zencart lit tous les scripts php du répertoire !

Donc pensez à renommer votre script original avec une extension différente, quelle qu’elle soit.
Par exemple header_php.backphp

Cette astuce est valable aussi pour les feuilles de style !
Vérifiez dans le code source de la page si vous n’entraînez pas  des css inutiles !

Timthumb pas d’image !

Après l’alerte vulnérabilité, la version 2 complètement réécrite corrige et améliore cet excellent script.

Toutefois, il peut arriver qu’en remplaçant la version précédente, vous n’ayez plus aucune image !

Avec le debug=true, on s’aperçoit que la gestion du répertoire dépend de l’environnement du site…

La modification apportée a consisté, pour nous, à remplacer ligne 785
$docRoot = @$_SERVER['DOCUMENT_ROOT'];
par
$docRoot = @$_SERVER['HTTP_RACINE'];

Le plus simple est de choisir la bonne variable avec un phpinfo.

Autre astuce :
Renvoyer l’error_log sur son email en l’ajoutant vers la ligne 1062 à
error_log(“TimThumb Debug line ” . __LINE__ . ” [$execTime : $tick]: $msg”);
qui devient
error_log(“TimThumb Debug line ” . __LINE__ . ” [$execTime : $tick]: $msg”, 1, “moi@monsite.com”);

N’hésitez pas à nous contacter !

Le site de l’auteur : http://www.binarymoon.co.uk/
La dernière version (2.8 au 01/09/2011) : http://timthumb.googlecode.com/svn/trunk/timthumb.php
Les paramètres décortiqués : http://www.binarymoon.co.uk/demo/