[spip-dev] forum.spip.org planté par 12528

En mettant à jour forum.spip.org, j'avais une page blanche et
Segmentation Fault du serveur apache (!!)

par dichotomie je suis arrivé à http://trac.rezo.net/trac/spip/changeset/12528

le plantage se fait que la page soit en cache ou pas
il est remarquable qu'un autre site mis à jour à côté de celui-ci ne
présente pas ce problème

le plantage se produit au niveau de ecrire/public.php :
$page = assembler($fond, _request('connect'), $lang);
mais la fonction elle-même n'a que deux arguments
assembler($fond, $connect='')

je continue d'investiguer, ça sent la boucle infinie en fait

-- Fil

Je pencherais plutot pour un bug d'une version précise de PHP qui n'est pas blindée contre les arguments superflus.
Le supprimer (dans ecrire/public.php) ne suffit-il pas à résoudre le pb ?

Committo,Ergo:Sum

Je pencherais plutot pour un bug d'une version précise de PHP qui n'est pas
blindée contre les arguments superflus.
Le supprimer (dans ecrire/public.php) ne suffit-il pas à résoudre le pb ?

Non.

J'ai creusé un peu : le plantage se produit dans
html_522fc5725202e7d35d3f232cbc35a8fd(), donc dans le squelette
compilé

ecrire/public/parametrer.php ligne 101
$page = $fonc(array('cache' => $cache), array($contexte));

-- Fil

J'ai creusé un peu : le plantage se produit dans
html_522fc5725202e7d35d3f232cbc35a8fd(), donc dans le squelette
compilé

ecrire/public/parametrer.php ligne 101
$page = $fonc(array('cache' => $cache), array($contexte));

Il s'agit de "Fonction principale du squelette forum.spip.org/sommaire.html"

En reprenant à tête reposée c'est bien l'introduction des nouvelles
méthodes de gestion d' URLs qui plante :
http://trac.rezo.net/trac/spip/changeset/12429

c'est urls/trad.php qui visiblement n'est plus compatible, car si je
remets des urls "normales" ça passe bien (sauf que, vu la structure du
site, il faut afficher par thread)
http://zone.spip.org/trac/spip-zone/browser/squelettes/forum.spip.org/urls/trad.php

-- Fil

J'ai regardé brièvement, je dois partir, mais s'il y a plantage d'Apache,
ça a des chances de provenir des "@header", tu as essayé en enlevant le "@" ?

Emmanuel

J'ai regardé brièvement, je dois partir, mais s'il y a plantage d'Apache,
ça a des chances de provenir des "@header", tu as essayé en enlevant le "@"
?

ça ne change rien

Une première remarque: le fichier urls/trad (crades ?) avait été réécrit pour spipnet:

http://zone.spip.org/trac/spip-zone/browser/galaxie/www.spip.net/squelettes/urls/trad.php?format=txt

et il y avait eu aussi un modif de son .htacces il me semble, mais il n'est pas sur la zone.

Ces deux fichiers ont-ils besoin d'être diffèrents pour forum-spip ?

Committo,Ergo:Sum

Ces deux fichiers ont-ils besoin d'être diffèrents pour forum-spip ?

L'URL d'un forum est (lang)_(id_thread).html[#forum(id_forum)]

exemple : fr_180170.html#forum206804

Les urls trad de spip.net ne gèrent pas les forums vu qu'il n'y en a pas :slight_smile:

-- Fil

Ca ne repond qu'à la moitié de la question et encore: qu'en est-il du htaccess,
et n'y a-t-il pas du code à partager dans urls/trad ?

Committo,Ergo:Sum

Ca ne repond qu'à la moitié de la question et encore: qu'en est-il du
htaccess,

son seul contenu pertinent (en plus des RewriteBase / et autres trucs
classiques):

# urls forum new style
RewriteRule ^[a-z_]+_([0-9]+)(\.html)? threadspip.php3?id_forum=$1 [QSA,L]
# urls forums old style (pour garder les liens)
RewriteRule ^threadspip([0-9]+)(-([0-9]+))?\.html
threadspip.php3?id_article=$1&id_forum=$3 [QSA,L]

qui ne concernent pas la page d'accueil (qui plante aussi)

et n'y a-t-il pas du code à partager dans urls/trad ?

certainement, si ; au départ forum.spip.org est basé sur une copie de
spip.net qu'on a fait évoluer

-- Fil

...

ok. Autres questions:

- sur spipnet et sur forumspip, le choix de leur fichier urls/trad.php est-il fait par la globale $type_urls ou par la meta ?

- si on enlève le
  if (!function_exists('generer_url_article')) {
au début de urls/trad, qu'est-ce qui se passe ?

Committo,Ergo:Sum

- sur spipnet et sur forumspip, le choix de leur fichier urls/trad.php
est-il fait par la globale $type_urls ou par la meta ?

par la globale

- si on enlève le
       if (!function_exists('generer_url_article')) {
au début de urls/trad, qu'est-ce qui se passe ?

Fatal error: Cannot redeclare generer_url_article() in
forum.spip.org/urls/trad.php on line 39

-- Fil

Ah, où est définit la premiere version ?

En tout cas, il faut refaire un "if function_exists" pour "recuperer_parametre_url" car on peut avoir l'un sans l'autre (depuis toujours d'ailleurs).

Committo,Ergo:Sum

La boucle qui fait planter Apache pourrait bien etre ici:

  function langue_choix ($id, $type='article') {
    switch ($type) {
      case 'article': ... return ...;
      case 'rubrique': ... return ...;
      case 'forum':
        include_spip('inc/forum');
        $racine = racine_forum($id);
        return langue_choix($racine[1], $racine[0]);
    }
  }

il faut s'assurer que racine_forum retourne bien un tableau: au moindre pb sur la table forum, tout le site devient inaccessible avec ça.

Committo,Ergo:Sum

Fatal error: Cannot redeclare generer_url_article() in
forum.spip.org/urls/trad.php on line 39

Ah, où est définit la premiere version ?

A priori c'est le même fichier qui est lu deux fois

En tout cas, il faut refaire un "if function_exists" pour
"recuperer_parametre_url" car on peut avoir l'un sans l'autre (depuis
toujours d'ailleurs).

fait, mais ça ne change rien

-- Fil

il faut s'assurer que racine_forum retourne bien un tableau: au moindre pb
sur la table forum, tout le site devient inaccessible avec ça.

Non, c'est pas ça non plus. J'ai même mis return 'fr'; juste avant,
sans succès :frowning:

Je crois que je suis bon pour reprogrammer ce vieux urls/trad dans le
nouveau formalisme

PS: il reste des generer_url_article() dans urls/standard, est-ce voulu ?

-- Fil

Hum, les 2 fichiers produisent les memes URL quant aux forums à ce qu'il me semble, que spip.net ne s'en servent pas est accessoire.
Les différences semblent plutot sur des numéros de rubrique ayant une signification particulière sur un site et pas l'autre.

Je viens de blinder le urls/trad.php de spinet quant à la boucle potentielle signalée,
serait-il possible d'essayer ce jeu-là sur forumspip voir si ça fait avancer le schmilblic ?

Committo,Ergo:Sum

Les différences semblent plutot sur des numéros de rubrique ayant une
signification particulière sur un site et pas l'autre.

non, il n'y a pas de différence de ce point de vue

Je viens de blinder le urls/trad.php de spinet quant à la boucle potentielle
signalée,
serait-il possible d'essayer ce jeu-là sur forumspip voir si ça fait avancer
le schmilblic ?

pas mieux

-- Fil

Les différences semblent plutot sur des numéros de rubrique ayant une
signification particulière sur un site et pas l'autre.

non, il n'y a pas de différence de ce point de vue

??? le diff entre les deux monte qu'on neutralise des tests sur les numéros de rubrique, c'est bien une différence, même si les sites ont des bouts de BD en commun.

Je viens de blinder le urls/trad.php de spinet quant à la boucle potentielle
signalée,
serait-il possible d'essayer ce jeu-là sur forumspip voir si ça fait avancer
le schmilblic ?

pas mieux

Alors c'est qu'on regarde depuis le début dans le mauvais fichier: si cet urls/trad.php marche sur spipnet, il devrait marcher sur spipforum, il y a qqch qui l'empêche de marcher en amont. Tu es sûr du htaccess ?

Committo,Ergo:Sum