Export CSV cassé sur infomaniak #7

Open
opened 5 months ago by b_b · 6 comments
b_b commented 5 months ago

Salut, depuis le commit 16576fe0d6 l'export CSV génère un fichier vide sur un mutu infomaniak propulsé par PHP Version 7.4.20. J'ai testé avec l'option envoyer=attachment ou sans, même résultat.

Je génère le CSV depuis un squelette en empilant des éléments dans un tableau, puis en appelant la fonction d'export ainsi :

[(#VAL{films}|inc_exporter_csv_dist{#GET{films},',',#LISTE{id_film,ref_film,titre_original,...}})]

En attendant, j'ai revert le fichier à la révision 692220378f pour réparer temporairement.

Salut, depuis le commit 16576fe0d6ad745f4614f5224054364d89897339 l'export CSV génère un fichier vide sur un mutu infomaniak propulsé par PHP Version 7.4.20. J'ai testé avec l'option `envoyer=attachment` ou sans, même résultat. Je génère le CSV depuis un squelette en empilant des éléments dans un tableau, puis en appelant la fonction d'export ainsi : `[(#VAL{films}|inc_exporter_csv_dist{#GET{films},',',#LISTE{id_film,ref_film,titre_original,...}})]` En attendant, j'ai revert le fichier à la révision 692220378ffabd25d70c8e8ea5a9e87ac1166458 pour réparer temporairement.
Owner

Franchement je vois pas bien ce qui peut casser entre les 2, surtout si ça plante aussi avec l'option envoyer=attachment qui ne passe pas par php://output et fait la même chose qu'avant ce commit :(

Franchement je vois pas bien ce qui peut casser entre les 2, surtout si ça plante aussi avec l'option envoyer=attachment qui ne passe pas par `php://output` et fait la même chose qu'avant ce commit :(
Owner

(un petit squelette simple de test qui te permet de reproduire ?)

(un petit squelette simple de test qui te permet de reproduire ?)
Poster

J'ai simplifié mon squelette au max, avec un squelettes/bb.html qui contient :

[(#SET{films,#ARRAY})]
[(#SET{films,#GET{films}|push{#LISTE{1,2,3}}})]
[(#SET{films,#GET{films}|push{#LISTE{4,5,6}}})]
[(#VAL{films}|inc_exporter_csv_dist{#GET{films},',',#LISTE{col1,col2,col3}})]

Accompagné d'un squelettes/bb_fonctions.php qui contient :

<?php

if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}

include_spip('inc/exporter_csv');

Pourtant si je print #GET{films} j'obtiens bien :

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

)

Et si je revert bonux à la révision que je cite, j'obtiens bien le CSV suivant :

"col1","col2","col3"
"1","2","3"
"4","5","6"
J'ai simplifié mon squelette au max, avec un squelettes/bb.html qui contient : ``` [(#SET{films,#ARRAY})] [(#SET{films,#GET{films}|push{#LISTE{1,2,3}}})] [(#SET{films,#GET{films}|push{#LISTE{4,5,6}}})] [(#VAL{films}|inc_exporter_csv_dist{#GET{films},',',#LISTE{col1,col2,col3}})] ``` Accompagné d'un squelettes/bb_fonctions.php qui contient : ``` <?php if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/exporter_csv'); ``` Pourtant si je print `#GET{films}` j'obtiens bien : ``` Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) ) ``` Et si je revert bonux à la révision que je cite, j'obtiens bien le CSV suivant : ``` "col1","col2","col3" "1","2","3" "4","5","6" ```
Owner

Je viens de tester en local sur mon MAMP en 7.4.12 et j'ai pas de soucis avec le squelette à l'identique, ou même en ajoutant une option envoyer :(

Du coup j'ai aussi essayé sur contrib, en 7.3.28, puis en le passant en php 7.4.20 et pareil, ça marche à tous les coups

Tu peux tester toi même:

$ curl -I "https://contrib.spip.net/?page=exportcsv&var_mode=calcul"

HTTP/2 200
date: Mon, 19 Jul 2021 08:55:32 GMT
server: Apache/2.4.25 (Debian)
vary: X-Forwarded-Proto,Cookie,Accept-Encoding
composed-by: SPIP 4.0.0-beta @ www.spip.net + https://contrib.spip.net/local/config.txt
content-disposition: inline; filename=films.csv
access-control-allow-origin: *
content-type: text/comma-separated-values; charset=utf-8
x-varnish: 659490282
via: 1.1 varnish (Varnish/6.0)
x-varnish-age: 0
set-cookie: contrib_lang=fr; path=/; SameSite=Lax

$ curl "https://contrib.spip.net/?page=exportcsv&var_mode=calcul"
"col1","col2","col3"
"1","2","3"
"4","5","6"

Ici je mets un var_mode=calcul pour être certain de pas varnisher, mais ça change rien avec ou sans.

Du coup on a quand même bien une spécificité sur ton site et/ou hébergement :
Peut-être une config PHP particulière, mais quoi donc ? Un problème avec un buffer ? la compression gzip activée côté PHP ?

J'allais dire, sinon une surcharge de fonctions dans le site, ou dans un autre plugin, qui pète avec la nouvelle version, mais je vois pas de différence sur le commit 16576fe0d6

Quand tu "revert", tu ne changes bien que ce fichier là du plugin bonux ? ou tu reviens en arrière sur tout le plugin ?

Je viens de tester en local sur mon MAMP en 7.4.12 et j'ai pas de soucis avec le squelette à l'identique, ou même en ajoutant une option envoyer :( Du coup j'ai aussi essayé sur contrib, en 7.3.28, puis en le passant en php 7.4.20 et pareil, ça marche à tous les coups Tu peux tester toi même: ``` $ curl -I "https://contrib.spip.net/?page=exportcsv&var_mode=calcul" HTTP/2 200 date: Mon, 19 Jul 2021 08:55:32 GMT server: Apache/2.4.25 (Debian) vary: X-Forwarded-Proto,Cookie,Accept-Encoding composed-by: SPIP 4.0.0-beta @ www.spip.net + https://contrib.spip.net/local/config.txt content-disposition: inline; filename=films.csv access-control-allow-origin: * content-type: text/comma-separated-values; charset=utf-8 x-varnish: 659490282 via: 1.1 varnish (Varnish/6.0) x-varnish-age: 0 set-cookie: contrib_lang=fr; path=/; SameSite=Lax $ curl "https://contrib.spip.net/?page=exportcsv&var_mode=calcul" "col1","col2","col3" "1","2","3" "4","5","6" ``` Ici je mets un `var_mode=calcul` pour être certain de pas varnisher, mais ça change rien avec ou sans. Du coup on a quand même bien une spécificité sur ton site et/ou hébergement : Peut-être une config PHP particulière, mais quoi donc ? Un problème avec un buffer ? la compression gzip activée côté PHP ? J'allais dire, sinon une surcharge de fonctions dans le site, ou dans un autre plugin, qui pète avec la nouvelle version, mais je vois pas de différence sur le commit 16576fe0d6ad745f4614f5224054364d89897339 Quand tu "revert", tu ne changes bien que ce fichier là du plugin bonux ? ou tu reviens en arrière sur tout le plugin ?
Poster

Merci pour le suivi !

Peut-être une config PHP particulière, mais quoi donc ? Un problème avec un buffer ? la compression gzip activée côté PHP ?

Je vais comparer la conf PHP d'infomaniak avec celle d'ovh pour voir ce qui les différencie.

Quand tu "revert", tu ne changes bien que ce fichier là du plugin bonux ?

Oui, exactement.

Merci pour le suivi ! > Peut-être une config PHP particulière, mais quoi donc ? Un problème avec un buffer ? la compression gzip activée côté PHP ? Je vais comparer la conf PHP d'infomaniak avec celle d'ovh pour voir ce qui les différencie. > Quand tu "revert", tu ne changes bien que ce fichier là du plugin bonux ? Oui, exactement.
Poster

Voici la sortie de php -i de l'ancien hébergement (PHP 7.4.15 chez OVH) VS l'actuel (PHP 7.4.20 chez Infomaniak).

Voici la sortie de `php -i` de l'ancien hébergement (PHP 7.4.15 chez OVH) VS l'actuel (PHP 7.4.20 chez Infomaniak).
Sign in to join this conversation.
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.