|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 30 ![]() |
bonjour, j'deviens complètement fou avec un script que j'avais déjà fait pour forcer le téléchargement de tout type de fichiers!!
ça marchait nickel, et puis plus rien... j'ai lu une bonne trentaine de discussions sur le sujet , la FAQ, surtout attentivement la page Header du manuel PhP avec les derniers Posts proposés, puis celle-ci très intéressante... mais rien n'y fait; en plus ça marche toujours nickel en local, mais sur le serveur distant, ça déconne: page blanche qui s'affiche. peut-être une config PhP modifiée sur le serveur ??? le code que j'utilise: Code :
* une variable de session donc un session_start(); * des includes de fichiers, * une requète SQL pour récupérer le nom du fichier à télécharger... j'ai essayé avec les options ob_start() ob_clean() etc..., j'ai essayé avec tous les divers header présents dans toutes les discussions trouvées: qui remplacent les Pragma, les Content-Type, etc... avez-vous une idée de piste que j'ai pas exploré? ou le bout de code qui marche parfaitement tout le temps avec tous les navigateurs? |
||
|
|
00
|
|
|
#2 | ||
![]() Développeur Web Inscription : juin 2004 Messages : 2 148 ![]() |
voilà le script que j'utilise, a moitié pompé, a moitié customisé...
Code :
|
||
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
A la place de basename j'aurais utilisé $_SERVER['DOCUMENT_ROOT'] car au moin tu es sur du chemin. Je pense que le problème peut venir de là.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 30 ![]() |
merci de ta réponse;
c'est le script qui était proposé sur le site Ibilab.net; bon, après quelques tests encore, je crois qu'il s'agit d'un problème de taille de fichier, avec les fonctions readfile() ou file_get_contents(). en local, j'ai essayé de faire un ini_set("memory_limit",-1) ou ini_set("memory_limit","200M"), il modifie bien la donnée memory_limit puisqu'en faisant phpinfo(), la valeur est bien changée, mais dans la pratique, le téléchargement reste toujours impossible (page blanche) pour des fichiers supérieurs à 8-10M... sur le serveur distant, ya même pas l'option --enable-memory-limit active, donc j'peux rien faire... mais le téléchargement reste possible aussi sur les petits fichiers. vous avez une idée? |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 30 ![]() |
autre remarque :
en local, la fonction readfile() marche mieux que file_get_contents() : le téléchargement s'opère quelque soit la taille du fichier, (même sur un gros fichier de 160M sans avoir modifié le memory_limit alors que la valeur par défaut est 8M (phpinfo))! mais toujours pas sur le serveur distant... |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
As tu testés pour l'histoire de la mémoire c'est à dire en local tu places la taille mémoire à 8 et tu tentes de télécharger le fichier qui est supérieur à 8. Si le fichier se télécharge c'est que le problème ne vient pas de là. Essay de capturer l'erreur c'est à dire que tu places en commentaire la zone des header();
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
00
|
|
|
#7 |
![]() Développeur Web Inscription : juin 2004 Messages : 2 148 ![]() |
dans ce cas, peut être faut-il aussi changer le time_limit qui doit être à 30s par défaut
|
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Citation:
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 30 ![]() |
effectivement, c'est pas un problème de time_limit(): la page devient blanche et figée presque aussitôt, pas au bout de 30s.
pour le test memory_limit() en local: si je fais avec file_get_contents() les téléchargements sont bien bloqués pour des fichiers supérieur à 2M, mais pas avec readfile()! (comment il faut faire pour afficher les erreurs des header() ??) |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Tu mets en commentaire les headers et tu executes directement le fichier pour voir s'il te retourne quelque chose.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 30 ![]() |
Ok.
idem: pour les fichiers inférieurs à 10-12M, il me renvoie le contenu du fichier (codé); mais pour les autres, pages blanches... ça doit vraiment être un problème de php.ini, faut qu'je titille l'hébergeur... il ya une explication pour la différence de traitement entre readfile et file_get_contents ? |
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
readfile doit lire le contenu directement sans cumuler le contenu mais pas la stocker dans une sortie. L'autre récupère le contenu du fichier entièrement et l'envoy sur le return d'ou la prise de mémoire
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com