[spip-dev] Cas de plantage de php avec l'utilisation de la compression html (résolu)

Bonjour,

j'ai réinstallé un nouveau server, j'y ai importer un backup des
bases de données et configuré le serveur web.

Lors des tests, j'ai remarqué que certains sites Spip
fonctionnaient, et d'autres non, en particulier ceux qui avaient la
configuration pour la compression html. D'ailleurs, le plantage
m'empếchait de m'authentifier, bien que les pages internes
fonctionnaient.

Il y avait des erreurs comme:
PHP message: PHP Fatal error: Cannot redeclare class

Et cela concernait aussi d'autres sites que Spip.

J'ai résolu le problème en désinstallant le paquet xcache du
serveur, parce que de toute façon j'utilise memcache.

Voilà, si ça peut servir de piste... et comme ça on peut continuer à
utiliser les fonctionnalités de compression html, css et js.

Bonne journée
Grégoire

Merci, on a exactement ce problème. J'essayerai dans les jours à venir si ta solution marche chez nous aussi .
:-)k++

Le plus simple est peut être tout simplement de désactiver la compression HTML : elle est buggée dans certains cas, et disparait complètement en 3.1

Je voudrais bien savoir en quoi elle est bugguée.

C'est vraiment dommage de faire disparaître quelque chose qui
fonctionne aussi bien.

Je parle bien sur de ce qui nettoie les pages html servies de tout
commentaires html, etc.

Xcache semble poser problème dans certains cas de figures, et rien
ne permet de se rendre compte que c'est un logiciel supplémentaire
sur le serveur qui à cet effet de bord.

D'ailleurs, c'est une bonne idée de désactiver les paquets xcache,
memcache, etc. pour voir ce qui n'est pas compatible.

Ou bien il faut revoir le code, mais c'est dommage de se passer de
la compression html parce que c'est incompatible avec xcache (et je
comprends mieux pourquoi je n'ai jamais réussi à me servir de xcache).

Bonne journée
G

La décision a été prise suite à cette discussion :
https://core.spip.net/issues/2813

Elle a donc été supprimée de la branche 3.1 :
https://core.spip.net/issues/3076

Alors comment vais-je débugguer les squelettes si je ne peux pas
lire dans les sources html le texte que je mets en commentaire?

C'est très pratique avec le débuggueur de Firefox, ça permet de
suivre le déroulement des squelettes sans toucher à l'apparence de
la page ni nécessiter d'être identifié.

Vous avez forcément une solution, ou alors comment vous faites sans?

Bonne journée
G

Les commentaires html ne sont pas supprimés du tout, justement c'est la compression que les supprimait (enfin je crois, je l'utilise jamais).
Ou alors j'ai pas compris...

Alors comment vais-je débugguer les squelettes si je ne peux
pas lire dans les sources html le texte que je mets en
commentaire?

C'est très pratique avec le débuggueur de Firefox, ça permet de
suivre le déroulement des squelettes sans toucher à l'apparence
de la page ni nécessiter d'être identifié.

Les commentaires html ne sont pas supprimés du tout, justement
c'est la compression que les supprimait (enfin je crois, je
l'utilise jamais). Ou alors j'ai pas compris...

Bonsoir,

je me suis mal exprimé.

Dans mes squelettes, j'utilise les commentaires html pour me donner
des indications :
<!-- skel-machin ligne 40 - A : #ID_ARTICLE - R : #ID_RUBRIQUE -
machin : [(#GET{machin})] -->

Comme mes squelettes sont partagés par plusieurs sites, je peux
désactiver la compression html et voir avec le débuggeur où j'en
suis, et éventuellement en vérifiant que j'ai bien le résultat
attendu d'une fonctionnalé si l'ensemble du code généré est dans un
commentaire html. Je peux aussi faire le test sans être authentifié.

Bref, ça me permet de travailler sur le serveur, éventuellement sur
une version différente de mes squelettes, ou de tenter de debugguer
un problème qui surgit, de manière confortable.

Je n'efface pas les commentaires, c'est trop long à ajouter, donc je
les laisses, mais sur les sites en production, j'active leur
suppression par l'option de compression html, qui se fait site par
site, et c'est bien son intérêt.

Par exemple, sur http://guolang.gites-voyages.com/ j'ai désactivé la
compression html. Inutile de me parler du problème d'encodage des
caractère, l'importation d'un backup (foireux?) s'est mal passée
pour ce site.

La suppression des commentaires html permet de rendre le code plus
concis.

Les exceptions pour les commentaires conditionnels sont pris en
compte, pourquoi pas. <!--[if lt IE 8]>

Pourquoi ne pas ajouter d'autres exceptions? ou corriger les plugins
qui sont incompatibles? ou bien que lors de l'installation du plugin
il y ait un avertissement lorsque la compression html est activée?
(et pareil sur l'option). Oui, c'est beaucoup de travail.

Le disfonctionnement de la compression html est rare compte tenu du
nombre de plugins qui s'en accomodent.

"Salut, je recommanderais plutôt de ne pas utiliser la
compression HTML car celle-ci pose souvent problème. J'ai
dernièrement rencontré un souci avec un plugin qui n'insérait
pas le contenu prévu dans les pages du site car le
preg_replace qui devait le faire ne matchait pas l'expression
cherché à cause des sauts de lignes générés dans le source
par la compression HTML."

Je trouve que c'est crade qu'UN plugin ait un problème à cause
d'un changement du nombre de lignes. Pourquoi se baser sur le nombre
de lignes? (je peux regarder le code source...)

Peut être qu'il faudrait un drapeau au niveau des plugins pour que
la compression html ne soit pas problématique pour ce/ces plugins
(ça demande du temps et du travail, je sais).

Des conflicts entre plugins, ça existe. Là, on est dans un cas ou
un/des plugins sont incompatibles avec une option de Spip. C'est
facile à tester et d'afficher une alerte pour le webmestre, non?

GIS 4 - SPIP-Contrib

Pareil, si la présence de données json est cassée par la compression
html (ah???), il faut créer une exception, ou corriger le code, ou
bien afficher une alerte pour le webmestre en cas de présence de
code json sur la page (et le webmestre prendra alors une décision
éclairée).

Voilà, avec la suppression de la compression html, Spip 3.1 régresse
vers la mauvaise qualité des plugins Wordpress dont aucun jusqu'à
présent ne faisaient un aussi bon travail de compression html/css/js
que Spip. Ne vous inquiétez pas, il reste de la marge.

Cette décision ayant été prise il y a 3 ans, je suppose que c'est
trop tard.

Dommage.
A+

Hello,

Dans mes squelettes, j'utilise les commentaires html pour me donner
des indications :
<!-- skel-machin ligne 40 - A : #ID_ARTICLE - R : #ID_RUBRIQUE -
machin : [(#GET{machin})] -->

Comme mes squelettes sont partagés par plusieurs sites, je peux
désactiver la compression html et voir avec le débuggeur où j'en
suis, et éventuellement en vérifiant que j'ai bien le résultat
attendu d'une fonctionnalé si l'ensemble du code généré est dans un
commentaire html.

J'ai l'impression que tu ne connais pas &var_mode=inclure.
Beaucoup plus efficace que des commentaire HTML !

La compression HTML fournie par le core de SPIP pose des tonnes de problèmes à plein de gens.
Je ne l'active jamais car parfois elle casse certains squelettes un peu technique.
Sa mort semble faire l'unanimité, l'énergie qu'il faudrait pour la débugger serai colossale pour un gain plus qu'inutile...

Bien sur que je connais (tardivement) var_mode=inclure, qui est très
pratique, mais qui nécessite d'être authentifié sur le site, et ne
peut pas être combiné avec var_mode=recalcul, ni d'avoir une vision
simplifiée et choisie de ce que l'on affiche comme informations.

La compression html de Spip casse le plugin jeux, parce que celui-ci
masque la réponse dans un commentaire html pour le faire afficher
ensuite. Pourquoi ne pas avoir utilisé la propriété display=none
puis de la changer pour l'afficher ensuite?

Merci de me préciser les tonnes de problèmes causés à pleins de gens.
Il est fort probable que ces pleins de gens ont aussi xcache qui est
activé, et qui est aussi largement connu pour casser plein de sites
(et qui est très mal packagé dans Debian).

J'ai pour le moment relevé 2 plugins cassés par la compression html
de Spip : GIS-4 et le plugin jeux.

Et, non, sa mort ne fait pas l'hunanimité, puisque j'y suis opposé
et que je ne suis pas le seul.

À quoi correspond <!--extra--> ?
À quoi ça sert?

Comment dois-je écrire mes commentaires html pour les voir ou les
faire disparaître comme je le fais actuellement ave l'option de
compression html? (qui est un nettoyage des commentaires en fait).

Bonne journée
G

Comment dois-je écrire mes commentaires html pour les voir ou les
faire disparaître comme je le fais actuellement ave l'option de
compression html? (qui est un nettoyage des commentaires en fait).

Salut,

La méthode que j'utilise pour mettre des éléments sur le site en
développement est simple :
dans mes_options.php :
$GLOBALS['site_en_developpement'] = 'oui';

puis dans le squelette :
[(#EVAL{$GLOBALS\['site_en_developpement'\]}|oui)Site En developpement]

Qu'en dis-tu ?

.Gilles

Bonne journée

Bonjour,

Merci,

c'est aussi complexe que d'avoir un test avec #SESSION, là où je
pouvais seulement utiliser <!-- un truc --> et le mélanger dans des
balises Spip sans risques.
Je peux ajouter le commentaire dans le test comme :
[(#EVAL{$GLOBALS\['site_en_developpement'\]}|oui) <!-- un comme --> ]

mais ça va rendre plus compliqué les affichages quand j'ai déjà dans
mes commentaires des tests qui sont effectués.

Donc, on passe d'une solution simple à quelque chose de bien plus
compliqué avec éventuellement des effets de bords.

De plus, cela nécessite de changer mes_options.php, or je n'ai pas
toujours la possibilité de le faire, contrairement à se loguer dans
Spip pour activer ou désactiver la compression.

En fait, il va falloir quelque chose qui ressemble à la compression
html de Spip actuel, mais sous forme simplifée et qui ne ferait que:
- Supprimmer les commentaires html (il restera un problème avec le
plugin jeux... mais c'est un vice de conception du plugin)
- Ne touche pas à <!-- extra --> (je ne sais pas ce que c'est)
- Ne touche pas aux commentaires conditionnels.

Ainsi, le code et les actions seraient bien simplifiées.