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... ;-)
[1] output buffering en anglais
Il y a des signes qui ne trompent pas, il faut des fois savoir prendre des décisions pour ne pas finir noyé sous un trop plein d’informations.
Lors de sa conférence téléphonique trimestrielle qui s’est tenue il y a quelques jours, Steve Jobs a indiqué au sujet des NetBooks qu’il ne voyait pas l’intérêt pour Apple d’entrer sur ce marché de machines à prix bas et qualité à l’avenant, et que l’iPhone est déjà là pour couvrir les mêmes besoins.
La théorie, c’est quand on sait tout et que rien ne fonctionne.
La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi.
Derniers commentaires
giz404 sur Trop d’info tue l’info : En général, je survole assez rapidement mes flux, et ne lit que ce qui me semble intéressant. Du (...)
fxj sur Nouvelle tempête sur les flux RSS, réduisons les intermédiaires ! : Il semble que cette URL de feeds via ton domaine n’est pas (encore) intégrée dans les pages du (...)
Clochix sur Les NetBooks sont-ils si populaires uniquement grâce à leur prix ? : Salut Nico, As-tu vu passer ça : http://pisani.blog.lemonde.fr/2008/... ? Ce n’est certes qu’une (...)
giz404 sur Les NetBooks sont-ils si populaires uniquement grâce à leur prix ? : Le marché des netbooks est très, très jeune. C’est sûr, le prix est un des facteurs de son (...)
Valentin sur Comment faire un tag cloud (nuage de tags, ou d’étiquettes) accessible ? : dans des balises H <
Valentin sur Comment faire un tag cloud (nuage de tags, ou d’étiquettes) accessible ? : “La taille, c’est une information purement visuelle” Faux ! Les mots sont dans des balises (...)
Mortimer sur Amusons nous avec des boucles SPIP et les petits nouveaux #GET, #SET et #ARRAY : Pour éviter que ça plante quand il n’y a pas de résultat dans la boucle de sélection _sites, il (...)
Clochix sur Wordle fait de jolis nuages de tags : Hello, Avec les transformations CSS3 (qui fonctionnent déjà dans webkit et seront dans FF 3.1) (...)
Oncle Tom sur Textorizer met les mots en images et inversement : Yes le rendu est sympa. De même que les softs recréant une image à partir de milliers d’autres (...)
clochix sur Nouvelle tempête sur les flux RSS, réduisons les intermédiaires ! : Hello, avec du retard parce que justement... je me suis désabonné de tes flux parce que de (...)