Categories > TinyButStrong general (FR) >

bad CRC dans le Zip fusionné

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Olivier HOT
Date: 2010-10-21
Time: 15:56

bad CRC dans le Zip fusionné

Bonjour,

J'utilise OpenTBS pour faire des fusions de documents OpenOffice Write en batch (j'utilise php en ligne de commande et pas en mode WEB derrière apache). Lorsque je lance une création d'environ 200 documents, ca marche plutôt bien mais certains refusent de s'ouvrir. En fouillant, je me rend compte que l'archive ZIP est corrompue, et les fichiers content.xml et styles.xml ont des erreurs CRC.
J'ai décompressé ces fichiers en ignorant les erreurs puis rezippé, et là pas de soucis. Visiblement, c'est la compression faite par OpenTbs qui a l'air de générer cette erreur.

Configuration sommaire:
PHP5.3.0
extrait du phpinfo() en ligne de commande:
Registered PHP Streams => php, file, glob, data, http, ftp, zip, compress.zlib,phar
Registered Stream Filters => convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.*
zlib

ZLib Support => enabled
Stream Wrapper support => compress.zlib://
Stream Filter support => zlib.inflate, zlib.deflate
Compiled Version => 1.2.3
Linked Version => 1.2.3

Directive => Local Value => Master Value
zlib.output_compression => Off => Off
zlib.output_compression_level => -1 => -1
zlib.output_handler => no value => no value


Quelqu'un a t il déjà eu le probleme?
Je vais faire le même test sur une ubuntu up to date au niveau des librairies, mais c'était pour savoir s'il y a déjà un truc identifié à ce jour...
By: Skrol29
Date: 2010-10-21
Time: 17:54

Re: bad CRC dans le Zip fusionné

Bonjour Olivier,

Merci pour avoir remonté ce problème. C'est la première que ce phénomène apparait.
Pourrais-tu me concocter un brin de code avec un modèle qui reproduise ce bug ?
By: Olivier HOT
Date: 2010-10-26
Time: 09:45

Re: bad CRC dans le Zip fusionné

Salut, je t'ai envoyé ça le 22/10 en réponse à la notification du message par mail. Je ne sais pas si tu l'as reçu.

N'hésites pas à me contacter pour installer le jeu de tests.

@+

Olivier
By: Skrol29
Date: 2010-10-26
Time: 11:00

Re: bad CRC dans le Zip fusionné

Salut,

Non je n'ai rien reçu :(
Pour être sûr, tu peux me l'envoyer à l'adresse indiquée ici :
http://www.tinybutstrong.com/onlyyou.html
By: Olivier HOT
Date: 2010-10-26
Time: 11:11

Re: bad CRC dans le Zip fusionné

C'est fait. Il fait 5.4 Mo. J'espère que ça va passer.

@+

Olivier
By: Skrol29
Date: 2010-10-26
Time: 16:10

Re: bad CRC dans le Zip fusionné

J'ai rien reçu, à mon avis ça ne passe pas. Essai avec http://dl.free.fr
By: Olivier HOT
Date: 2010-10-27
Time: 09:37

Re: bad CRC dans le Zip fusionné

C'est fait. Je t'ai mis le lien par mail. Penses à lire le contenu du mail initial que je t'ai joint.

@+

Olivier
By: Skrol29
Date: 2010-10-27
Time: 12:22

Re: bad CRC dans le Zip fusionné

Salut Olivier,

J'ai bien reçu ton message et le code. Merci à toi pour avoir fourni ces éléments :)

Dans ton fichier ODT fusionné, c'est le fichier "styles.xls" qui pose problème. La méthode gzdeflate() de PHP le compresse en une taille de 3 188 octets, alors que 7zip (et semble-t-il tout autre fonction logicielle) le compresse en 3 153 octets.
C'est pourtant bien la méthode de compression DEFLATE (normalisé en RFC 1951) qui est sensée être utilisée dans le deux cas, niveau de compression = 6 (c'est celui par défaut).
J'ai essayé d'autres niveau de compression, d'autres méthodes gzencode() et gzcompress(), mais je n'arrive pas du tout à retrouver cette compression à 3 153 octet produite par les logiciels.
J'ai essayé en PHP 5.3.0 et 4.4.9, c'est le même résultat.

Pour ceux qui veulent reproduire cette étrangeté PHP, j'ai mis le fichier style.xls incriminé dans un zip à cette adresse : http://www.tinybutstrong.com/download/bug_styles.zip

Donc voilà : pour l'instant le bug est identifié mais je continue à chercher la solution car à ce stade c'est PHP qui produit un résultat innatendu.

By: Skrol29
Date: 2010-10-27
Time: 13:25

Re: bad CRC dans le Zip fusionné

Pour info, le fichier est compressé avec une taille de 3 177 octets par la classe ZipArchive de la biblio zip de PHP. Cett archive est valide bien sûr.
By: Skrol29
Date: 2010-10-28
Time: 10:14

Re: bad CRC dans le Zip fusionné

Je change de piste, c'est le CRC renseigné par OpenTBS qui semble non valide....
By: Olivier HOT
Date: 2010-11-03
Time: 11:35

Re: bad CRC dans le Zip fusionné

C'est bon, avec ton correctif, ça fonctionne correctement.

Merci pour le boulot accompli.

@+

Olivier