Jump to content

Produits virtuels (fichiers ZIP ou autres) inutilisables une fois téléchargés


Recommended Posts

Bonjour !

Nous vendons uniquement des produits virtuels (logiciels). L'upload se passe très bien, aucun problème. La commande également, mais une fois que celle-ci est validée, les fichiers téléchargés via la boutique sont inutilisables :

- Les fichiers ZIP téléchargés ne peuvent pas être décompressés. Tous les logiciels de décompression nous disent que l'archive est corrompue. Pour pouvoir décompresser le fichier, il faut lancer une réparation de l'archive, et là ça marche.

- Nous avons essayé sans passer par des zips en mettant directement les EXE ou MSI originaux. Là, quand nous essayons de lancer les fichiers téléchargés... il ne se passe strictement rien.

Les fichiers originaux, compressés ou non, marchent parfaitement bien et ont exactement la même taille que leurs homologues téléchargés par la boutique.

Merci pour votre aide. :-)

Link to comment
Share on other sites

Donc si j'ai bien suivi :
- si je télécharge le fichier X sur le serveur Y depuis le site qui est sur le serveur Y : ca ne marche pas
- si je télécharge le fichier X sur le serveur Y mais depuis une page hors de Y : ca fonctionne

Link to comment
Share on other sites

(Merci pour vos réponses...)

Oui c'est ça, si le fichier est sur notre site mais en dehors de la boutique Prestashop, sur un autre dossier, nous pouvons le télécharger et le dézipper ensuite ou l'exécuter sans problème.

Si nous téléchargeons le même fichier uploadé dans la boutique Prestashop, après un test d'achat (même site, même hébergeur, donc même serveur), il semble corrompu une fois sur le disque dur : archive endommagée (si fichier ZIP), ou alors le programme ne s'exécute pas (fichier EXE ou MSI).

Link to comment
Share on other sites

Rebonjour. :-)

Alors aucune erreur n'apparaît dans le log.

En revanche j'ai comparé les fichiers originaux et ceux téléchargés via la boutique, et ils ne sont pas exactement pareils.

Les fichiers téléchargés par Prestashop ont tous un caractère parasitaire au début, code 10 (hexadécimal 0A). Un seul octet, mais qui suffit à rendre le fichier illisible. Il faut que je le supprime manuellement après le téléchargement pour rendre le fichier lisible.

J'ai essayé de modifier le script de téléchargement (get-file.php). Le remplacement des echo fgets(...) par un readfile($file) ne change rien, et quoi que je fasse, ce caractère parasitaire est systématiquement inscrit au début du fichier.

Ca vous évoque quelque-chose ?

Link to comment
Share on other sites

Ca y est j'ai trouvé.

Ce n'est pas lié à l'encodage. Pour corriger cette erreur j'ai modifié get-file.php :


1) Lignes 1 à 3 :

<?php

include(dirname(__FILE__).'/config/config.inc.php');

... remplacées par :

<?php
ob_start();
include(dirname(FILE).’/config/config.inc.php’);

2) Ligne 261 :

ob_end_flush();

... remplacée par :

ob_clean();


C'est tout. Plus de problème.

J'ai trouvé la solution dans un forum suite à une question d'une personne qui avait exactement le même problème : fichiers binaires corrompus après téléchargement par script PHP.

Je ne m'y connais pas assez en PHP pour comprendre le pourquoi du comment, mais si cette modification est nécessaire pour nous elle doit certainement l'être pour d'autres utilisateurs de Prestashop qui pourraient buter sur la même anomalie.

(merci pour vous être penché sur le problème, samy, très sympa)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...