2
Indiquez l’intérêt que vous portez à cette question
0

Disfonctionnement partiel après passage à PHP 5 sur free

Bonjour,
Je suis une simple utilisatrice de Spip depuis des années pour une page perso hébergée chez free (mais je ne m’y connais pas du tout en informatique). Le site devenant très chargé et ayant des erreurs 500 fréquentes, notamment sur un article (pourtant léger et sans images), j’ai vu que ça pouvait venir du PHP trop ancien et que l’ancien PHP 4 proposé en standard chez Free pouvait être passé en PHP 5. J’ai donc ajouté un .htaccess à la racine avec juste la ligne php 1.
Tout va beaucoup mieux pour l’article qui ne voulait pas s’afficher, je n’ai plus d’erreur 500 pour le moment (hasard ou pas ?) mais j’ai un dysfonctionnement pour un ensemble d’articles :

Warning : array_merge() [function.array-merge] : Argument #1 is not an array in /mnt/114/sdb/a/5/lesecritoires/ecrire/public/composer.php(49) : eval()’d code on line 144

Juste avant ce message d’erreur, j’avais le même, mais à la ligne 132 (l’erreur est passée à la ligne 144 après le nettoyage de mes dossiers tmp et local).
Mon problème : j’ai bien le fichier "/ecrire/public/composer.php" (je ne sais pas à quoi correspond le "php(49)" dans l’erreur) mais je ne sais pas trop quoi modifier ?
Je suis sous SPIP 2.1.0 [15528] (et ma nouvelle version de PHP est PHP Version 5.1.3RC4-dev).
Voici le contenu de mon fichier "/ecrire/public/composer.php" des lignes 129 à 149 :

// Le squelette compile est-il trop vieux ?
// http://doc.spip.org/@squelette_obsolete
function squelette_obsolete($skel, $squelette)
static $date_change = null ;
// ne verifier la date de mes_fonctions et mes_options qu’une seule fois
// par hit
if (is_null($date_change))
if (@file_exists($fonc = ’mes_fonctions.php’)
OR @file_exists($fonc = ’mes_fonctions.php3’))
$date_change = @filemtime($fonc) ; # compatibilite
if (defined(’_FILE_OPTIONS’))
$date_change = max($date_change,@filemtime(_FILE_OPTIONS)) ;

return (
(isset($GLOBALS[’var_mode’]) AND in_array($GLOBALS[’var_mode’], array(’recalcul’,’preview’,’debug’)))
OR !@file_exists($skel)
OR ((@file_exists($squelette) ?@filemtime($squelette):0)
> ($date = @filemtime($skel)))
OR ($date_change > $date)
) ;

Pouvez-vous m’indiquer si la solution est bien dans ce fichier ?
J’ajoute que le problème se pose pour tous les squelettes perso de rubriques qui affichent par ordre alphabétique les mots clés. Dans ces squelettes, j’ai en particulier cette ligne :
[(#SETbeginby[(#TITRE|sansle|onelettre)],[(#GETbeginby[(#TITRE|sansle|onelettre)]|array_merge#ARRAY#COMPTEUR_BOUCLE,#ID_MOT)])]
J’avais trouvé ça sur un forum il y a très longtemps, est-ce qu’il y a quelque chose d’incompatible avec ma nouvelle version du PHP ?
Je vous remercie d’avance,
Bonne soirée