session_start() et exec() ne font pas toujours bon ménage en PHP
- Date de publication
- 30/janv.
2008 - Tags
SPIP utilise toujours son propre système de gestion de sessions applicatives alors que PHP les supporte depuis maintenant longtemps de façon satisfaisante. Ou pas...
Avec un SPIP 1.9.2c installé sur Windows Server 2003 SP2, avec Apache 2.2.6 et PHP 5.2.4, j’avais des plantages étranges sur la page de configuration avancée de SPIP et l’indexation ne marchait plus bien, certains articles passant au travers. Je n’avais pas ce soucis sur le même site déployé sur Linux ou Mac OS X.
Après bien des essais et lectures de code tant perso que de SPIP, il s’avère que PHP supporte mal l’usage simultané de sessions et de exec(). Le bug #22526 a beau dater de 5 ans et être clos, le problème se pose encore, manifestement.
J’avais en fait un session_start() dans mes_options.php pour avoir une session PHP active dans toutes les pages. Du coup j’avais un plantage, tant des exec() de test de librairies graphiques dans la configuration avancée, que des exec() d’extraction de contenus des documents dans l’indexation.
De proche en proche, j’ai découvert sur différents forums que le problème est bien d’actualité, et qu’heureusement une solution existe !
Il suffit de remplacer toutes les instructions telles que la suivante :
exec(...);Par ceci :
session_write_close();
exec(...);
session_start();Bien sûr, si le exec() en question se trouve après du code écrivant sur la sortie standard, il faudra utiliser les fonctions de bufferisation de sortie1 pour éviter les warning dûs à l’envoi de cookie par session_start().
Bien que les sources qui relatent ce problème et sa solution datent un peu, je peux vous confirmer que modifier de cette façon le source des fichiers présents dans ecrire/extract/*.php résout bien le problème.
Finalement, les sessions de SPIP sont meilleures que celles de PHP, au moins sur ce point... ;-)
- Notes
[1] output buffering en anglais
Commentaires
Partager
Pour faire un lien vers cet article, vous pouvez utiliser soit son URL canonique soit son URL courte :
Billets avec les mêmes tags
Derniers billets
-
Faut-il continuer à supporter Internet Explorer 6 ?
Article initialement publié dans le blog de Clever Age.
On ne va pas ergoter sans fin, tout le monde doit maintenant savoir que Internet Explorer 6 — IE6 pour les intimes — est un navigateur obsolète et dangereux. Et pourtant, certains continuent à l’utiliser. Faut-il les en dissuader, refuser de leur fournir son support, aller même jusqu’à leur empêcher l’accès, ou faut-il continuer à supporter (les faiblesses de) ce navigateur ?
- Date de publication
- 22/juillet
2010 - Tags
-
Les inscriptions à Paris Web 2010 sont ouvertes !
Paris Web 2010, c’est la cinquième édition de ce rendez-vous français annuel, devenu incontournable, pour se tenir informé des bonnes pratiques de développement Web. Go go go !
- Date de publication
- 2/juillet
2010 - Tags
-
Faciliter la reprise de tweets (les retweets) à l’ancienne sur Twitter
Même si Twitter a mis en place depuis maintenant un certain temps un mécanisme natif de retweets1, je préfère souvent continuer à utiliser les « RT » traditionnels, qui laissent la possibilité de commenter le tweet initial, ce que ne permet pas le retweet officiel. Une règle qui me paraît essentielle pour faciliter le retweet à l’ancienne, c’est de prévoir une taille de tweet suffisamment faible pour que le retweeteur voit son travail facilité, surtout si le tweet initial ne contient que très peu de mots inutiles.
- Date de publication
- 14/juin
2010 - Tags

Derniers commentaires
R03ER7 sur Le Jailbreak de l’iPhone ou de l’iPod Touch est-il légal ? : « Jailbreaker ne veut pas dire voler » mais plutôt « Permettre l’installation d’applications quand (...)
Sur Citation d’Oscar Wilde : sauf qu’il me semble qu’en vrai c’est une phrase de A de St Exupery !
Scandale sur Afficher les favicon dans la barre personnelle de Firefox sous Mac OS : Pour ceux qui, comme moi, manquent de place dans leur barre personnelle, j’ai aussi ajouté le (...)
Scandale sur Afficher les favicon dans la barre personnelle de Firefox sous Mac OS : merci pour le tuyau, ça marche. manque juste dans le tutoriel le chemin ou mettre le fichier, (...)
Nicolas Steinmetz sur Faut-il continuer à supporter Internet Explorer 6 ? : Parce que certaines entreprises sont encore sous WinNT / Win2000 à cause d’applications métiers ? (...)
ThierryD sur Prendre des éclairs (d’orage) en photo : Bonjour, Je me permet d’intervenir dans ce post pour vous faire part de ma technique pour (...)
ventrea sur Backup d’un Mac sur un NAS facile et sans bidouille, c’est possible ? : Time machine est pris en chagre par les dernières versions de firmware sur les nas Qnap (...)
Sur Une sauvegarde de fichiers en ligne très simple pour pas cher : Oui, j’ai le même genre et c’est vraiment pratique :) : https://www.axalot.fr
Sur Google Chrome sur Mac, bilan mitigé : > Pas de barre de titre, donc je ne connais pas le nom de la page dès que j’ai plus de 5 onglets (...)
Maurice sur Backup d’un Mac sur un NAS facile et sans bidouille, c’est possible ? : Par contre, je ne pense pas que ça résolve le problème de performance lorsque la taille du backup (...)