21
Indiquez l’intérêt que vous portez à cette question
-1

Message PHP : Warning : Invalid argument supplied for foreach()...

Bonjour,

J’ai un message d’erreur apparemment relatif à du code php dans certaines pages de mon ste :

Warning : Invalid argument supplied for foreach() in /home/www/site/ecrire/public.php on line 130

Effectivement voici le code concerné dans le fichier public.php (Spip 1.9) :

// 2. Cas d'une page contenant du PHP :
	// Attention cette partie eval() doit imperativement
	// etre declenchee dans l'espace des globales (donc pas
	// dans une fonction).
	else {
		// Si la retention du flux de sortie est impossible
	  	// envoi des entetes
		if (!$flag_ob) {
			foreach($page['entetes'] as $k => $v) @header("$k: $v");
			eval('?' . '>' . $page['texte']);
			$page['texte'] = '';
		}

		// sinon, inclure_balise_dynamique nous enverra peut-etre
		// quelques en-tetes de plus (voire qq envoyes directement)
		else {
			ob_start(); 
			$res = eval('?' . '>' . $page['texte']);
			$page['texte'] = ob_get_contents(); 
			ob_end_clean();

			foreach($page['entetes'] as $k => $v) @header("$k: $v");
			// en cas d'erreur lors du eval,
			// la memoriser dans le tableau des erreurs
			// On ne revient pas ici si le nb d'erreurs > 4
			if ($res === false AND $affiche_boutons_admin
			AND $auteur_session['statut'] == '0minirezo') {
				include_spip('inc/debug');
				erreur_squelette(_T('zbug_erreur_execution_page'));
			}
		}
	}

Donc oui, j’ai du code PHP dans mes pages de squelette, j’ignore comment éviter cet avertissement, d’autant qu’il n’apparaît pas sur la page d’accueil (sommaire) mais sur les autres (article, breve ou pages spéciales).

Question subsidiaire : le passage à PHP5 serait-il efficace contre ce message ?