Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais ! Je suppose donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
2) C'est lié au fournisseur d'accès : le script est sur un site hébergé
chez Free et je suis moi-même chez Free.
3) Je programme bien mal, ce qui est fort possible.
Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais ! Je suppose donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
2) C'est lié au fournisseur d'accès : le script est sur un site hébergé
chez Free et je suis moi-même chez Free.
3) Je programme bien mal, ce qui est fort possible.
Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais ! Je suppose donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
2) C'est lié au fournisseur d'accès : le script est sur un site hébergé
chez Free et je suis moi-même chez Free.
3) Je programme bien mal, ce qui est fort possible.
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais !
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais !
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais !
max_execution_time = 90 au lieu de 30
memory_limit = 32M au lieu de 8M
upload_max_filesize = 64M au lieu de 2M
max_execution_time = 90 au lieu de 30
memory_limit = 32M au lieu de 8M
upload_max_filesize = 64M au lieu de 2M
max_execution_time = 90 au lieu de 30
memory_limit = 32M au lieu de 8M
upload_max_filesize = 64M au lieu de 2M
amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Voici le morceau de script qui provoque le téléchargement. Vous
constaterez que j'ai essayé 2 fonctions différentes fpassthru et
readfile, mais cela donne le même résultat...
Au passsage, j'ai l'impression qu'en PHP il y a beaucoup de fonctions différentes qui
permettent d'arriver au résultat voulu : ça va être long à apprendre
tout ça !
--------------------
// on récupère les infos sur le fichier et on crée l'entête
$taille = filesize($fic);
$type_mime = def_mime_type($fic);
$f_nom = basename($fic);
//on ecrit l'entete
header('Content-Type: '.$type_mime);
header('Content-Length: '.$taille);
header('Content-Disposition: attachment; filename='.$f_nom);
header('Content-Transfer-Encoding: binary');
// on ouvre le fichier en lecture en mode binaire
//$file = @ fopen($fic, 'rb');
//if ($file) {
// on envoie le fichier
// fpassthru($file);
// on ecrit le log d'accès
// ecrire_log("acces au fichier $_GET[fic]");
//} else {
// echo "Il y a eu une erreur de chargement" ;
// ecrire_log("echec de l'acces au fichier $_GET[fic]");
//}
if(readfile("$fic")) {
ecrire_log("acces au fichier $_GET[fic]");
} else {
ecrire_log("echec de l'acces au fichier $_GET[fic]");
}
amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Voici le morceau de script qui provoque le téléchargement. Vous
constaterez que j'ai essayé 2 fonctions différentes fpassthru et
readfile, mais cela donne le même résultat...
Au passsage, j'ai l'impression qu'en PHP il y a beaucoup de fonctions différentes qui
permettent d'arriver au résultat voulu : ça va être long à apprendre
tout ça !
--------------------
// on récupère les infos sur le fichier et on crée l'entête
$taille = filesize($fic);
$type_mime = def_mime_type($fic);
$f_nom = basename($fic);
//on ecrit l'entete
header('Content-Type: '.$type_mime);
header('Content-Length: '.$taille);
header('Content-Disposition: attachment; filename='.$f_nom);
header('Content-Transfer-Encoding: binary');
// on ouvre le fichier en lecture en mode binaire
//$file = @ fopen($fic, 'rb');
//if ($file) {
// on envoie le fichier
// fpassthru($file);
// on ecrit le log d'accès
// ecrire_log("acces au fichier $_GET[fic]");
//} else {
// echo "Il y a eu une erreur de chargement" ;
// ecrire_log("echec de l'acces au fichier $_GET[fic]");
//}
if(readfile("$fic")) {
ecrire_log("acces au fichier $_GET[fic]");
} else {
ecrire_log("echec de l'acces au fichier $_GET[fic]");
}
amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Voici le morceau de script qui provoque le téléchargement. Vous
constaterez que j'ai essayé 2 fonctions différentes fpassthru et
readfile, mais cela donne le même résultat...
Au passsage, j'ai l'impression qu'en PHP il y a beaucoup de fonctions différentes qui
permettent d'arriver au résultat voulu : ça va être long à apprendre
tout ça !
--------------------
// on récupère les infos sur le fichier et on crée l'entête
$taille = filesize($fic);
$type_mime = def_mime_type($fic);
$f_nom = basename($fic);
//on ecrit l'entete
header('Content-Type: '.$type_mime);
header('Content-Length: '.$taille);
header('Content-Disposition: attachment; filename='.$f_nom);
header('Content-Transfer-Encoding: binary');
// on ouvre le fichier en lecture en mode binaire
//$file = @ fopen($fic, 'rb');
//if ($file) {
// on envoie le fichier
// fpassthru($file);
// on ecrit le log d'accès
// ecrire_log("acces au fichier $_GET[fic]");
//} else {
// echo "Il y a eu une erreur de chargement" ;
// ecrire_log("echec de l'acces au fichier $_GET[fic]");
//}
if(readfile("$fic")) {
ecrire_log("acces au fichier $_GET[fic]");
} else {
ecrire_log("echec de l'acces au fichier $_GET[fic]");
}
> memory_limit = 32M au lieu de 8M
Mange pas de pain, mais chez free j'ai un doute de la possibilité.
> memory_limit = 32M au lieu de 8M
Mange pas de pain, mais chez free j'ai un doute de la possibilité.
> memory_limit = 32M au lieu de 8M
Mange pas de pain, mais chez free j'ai un doute de la possibilité.
Bonjour,
plutôt débutant en php (ma langue naturelle est le TCL ;-) ), je bute sur un
problème gênant :
j'ai créé un ensemble (modeste) de scripts dont le but est de gérer l'accès à
des répertoires sur un serveur web. Il s'agit en fait d'une zone de
téléchargement qui n'est pas en accès libre mais nécessite d'être authentifié
au préalable. Cette authentification est faite en amont depuis un CMS (en
l'occurence SPIP). Le pb est que certaines personnes connectées ne perviennet
pas à télécharger l'intégralité des fichiers qu'elles souhaitent : les
fichier se trouvent ainsi corrompus. Je ne comprends pas pourquoi, et je n'ai
jamais eu personnellement ce problème quand je fais des essais ! Je suppose
donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
2) C'est lié au fournisseur d'accès : le script est sur un site hébergé chez
Free et je suis moi-même chez Free.
3) Je programme bien mal, ce qui est fort possible.
Bonjour,
plutôt débutant en php (ma langue naturelle est le TCL ;-) ), je bute sur un
problème gênant :
j'ai créé un ensemble (modeste) de scripts dont le but est de gérer l'accès à
des répertoires sur un serveur web. Il s'agit en fait d'une zone de
téléchargement qui n'est pas en accès libre mais nécessite d'être authentifié
au préalable. Cette authentification est faite en amont depuis un CMS (en
l'occurence SPIP). Le pb est que certaines personnes connectées ne perviennet
pas à télécharger l'intégralité des fichiers qu'elles souhaitent : les
fichier se trouvent ainsi corrompus. Je ne comprends pas pourquoi, et je n'ai
jamais eu personnellement ce problème quand je fais des essais ! Je suppose
donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
2) C'est lié au fournisseur d'accès : le script est sur un site hébergé chez
Free et je suis moi-même chez Free.
3) Je programme bien mal, ce qui est fort possible.
Bonjour,
plutôt débutant en php (ma langue naturelle est le TCL ;-) ), je bute sur un
problème gênant :
j'ai créé un ensemble (modeste) de scripts dont le but est de gérer l'accès à
des répertoires sur un serveur web. Il s'agit en fait d'une zone de
téléchargement qui n'est pas en accès libre mais nécessite d'être authentifié
au préalable. Cette authentification est faite en amont depuis un CMS (en
l'occurence SPIP). Le pb est que certaines personnes connectées ne perviennet
pas à télécharger l'intégralité des fichiers qu'elles souhaitent : les
fichier se trouvent ainsi corrompus. Je ne comprends pas pourquoi, et je n'ai
jamais eu personnellement ce problème quand je fais des essais ! Je suppose
donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
2) C'est lié au fournisseur d'accès : le script est sur un site hébergé chez
Free et je suis moi-même chez Free.
3) Je programme bien mal, ce qui est fort possible.
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais !
modifier php.ini (sous debian à /usr/local/lib/php5)
par exemple :
max_execution_time = 90 au lieu de 30
memory_limit = 32M au lieu de 8M
upload_max_filesize = 64M au lieu de 2M
optimiser les valeurs en fonction des besoins.
Y
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais !
modifier php.ini (sous debian à /usr/local/lib/php5)
par exemple :
max_execution_time = 90 au lieu de 30
memory_limit = 32M au lieu de 8M
upload_max_filesize = 64M au lieu de 2M
optimiser les valeurs en fonction des besoins.
Y
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais !
modifier php.ini (sous debian à /usr/local/lib/php5)
par exemple :
max_execution_time = 90 au lieu de 30
memory_limit = 32M au lieu de 8M
upload_max_filesize = 64M au lieu de 2M
optimiser les valeurs en fonction des besoins.
Y
Bonjour,amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Chez moi, spip et le safe mode font mauvais ménage. Bien vérifier qu'il
n'est pas activé.
--------------------
// on récupère les infos sur le fichier et on crée l'entête
Oui mais non: si les headers sont déjà partis on est morts. Donc un
script qui fait du download doit nécessairement:
1) commencer en PREMIERE LIGNE et SANS caractère quel qu'il soit avant
<?php par :
<?php
ob_start();
Ensuite avant de construire le contenu du résultat, on vire tout ce qui
a pu aller dans le buffer par un :
ob_clean();
Et *maintenant* on peut commencer à mettre des résultats dans le buffer:$taille = filesize($fic);
$type_mime = def_mime_type($fic);
$f_nom = basename($fic);//on ecrit l'entete
Perso je le fais après traitement des éventuelles erreurs mais peu
importe, ça doit fonctionner.header('Content-Type: '.$type_mime);
header('Content-Length: '.$taille);
header('Content-Disposition: attachment; filename='.$f_nom);
header('Content-Transfer-Encoding: binary');
Perso je n'ai jamais utilisé que deux headers: le content type par
exemple ci-dessous pour un csv, et le disposition à l'identique.
header("Content-Type: text/csv; charset=iso-8859-1;");
header("Content-disposition: attachment; filename=$file_name");} else {
ecrire_log("echec de l'acces au fichier $_GET[fic]");
}
Attention au _GET[fic] qui écrit dans un log: si je peux appeler en http
le fichier de log en question alors je peux exécuter du code sur ton
serveur en remplissant $_GET['fic'] par du code php.
Enfin, si on utilise un buffer, on peut laisser php le flusher ou le
forcer, par habitude j'utilise:
ob_flush();
exit();
pour tout forcer explicitement, mais ob_end_flush() ou rien du tout
devraient fonctionner.
Bonjour,
amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Chez moi, spip et le safe mode font mauvais ménage. Bien vérifier qu'il
n'est pas activé.
--------------------
// on récupère les infos sur le fichier et on crée l'entête
Oui mais non: si les headers sont déjà partis on est morts. Donc un
script qui fait du download doit nécessairement:
1) commencer en PREMIERE LIGNE et SANS caractère quel qu'il soit avant
<?php par :
<?php
ob_start();
Ensuite avant de construire le contenu du résultat, on vire tout ce qui
a pu aller dans le buffer par un :
ob_clean();
Et *maintenant* on peut commencer à mettre des résultats dans le buffer:
$taille = filesize($fic);
$type_mime = def_mime_type($fic);
$f_nom = basename($fic);
//on ecrit l'entete
Perso je le fais après traitement des éventuelles erreurs mais peu
importe, ça doit fonctionner.
header('Content-Type: '.$type_mime);
header('Content-Length: '.$taille);
header('Content-Disposition: attachment; filename='.$f_nom);
header('Content-Transfer-Encoding: binary');
Perso je n'ai jamais utilisé que deux headers: le content type par
exemple ci-dessous pour un csv, et le disposition à l'identique.
header("Content-Type: text/csv; charset=iso-8859-1;");
header("Content-disposition: attachment; filename=$file_name");
} else {
ecrire_log("echec de l'acces au fichier $_GET[fic]");
}
Attention au _GET[fic] qui écrit dans un log: si je peux appeler en http
le fichier de log en question alors je peux exécuter du code sur ton
serveur en remplissant $_GET['fic'] par du code php.
Enfin, si on utilise un buffer, on peut laisser php le flusher ou le
forcer, par habitude j'utilise:
ob_flush();
exit();
pour tout forcer explicitement, mais ob_end_flush() ou rien du tout
devraient fonctionner.
Bonjour,amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Chez moi, spip et le safe mode font mauvais ménage. Bien vérifier qu'il
n'est pas activé.
--------------------
// on récupère les infos sur le fichier et on crée l'entête
Oui mais non: si les headers sont déjà partis on est morts. Donc un
script qui fait du download doit nécessairement:
1) commencer en PREMIERE LIGNE et SANS caractère quel qu'il soit avant
<?php par :
<?php
ob_start();
Ensuite avant de construire le contenu du résultat, on vire tout ce qui
a pu aller dans le buffer par un :
ob_clean();
Et *maintenant* on peut commencer à mettre des résultats dans le buffer:$taille = filesize($fic);
$type_mime = def_mime_type($fic);
$f_nom = basename($fic);//on ecrit l'entete
Perso je le fais après traitement des éventuelles erreurs mais peu
importe, ça doit fonctionner.header('Content-Type: '.$type_mime);
header('Content-Length: '.$taille);
header('Content-Disposition: attachment; filename='.$f_nom);
header('Content-Transfer-Encoding: binary');
Perso je n'ai jamais utilisé que deux headers: le content type par
exemple ci-dessous pour un csv, et le disposition à l'identique.
header("Content-Type: text/csv; charset=iso-8859-1;");
header("Content-disposition: attachment; filename=$file_name");} else {
ecrire_log("echec de l'acces au fichier $_GET[fic]");
}
Attention au _GET[fic] qui écrit dans un log: si je peux appeler en http
le fichier de log en question alors je peux exécuter du code sur ton
serveur en remplissant $_GET['fic'] par du code php.
Enfin, si on utilise un buffer, on peut laisser php le flusher ou le
forcer, par habitude j'utilise:
ob_flush();
exit();
pour tout forcer explicitement, mais ob_end_flush() ou rien du tout
devraient fonctionner.
Bonjour,
plutôt débutant en php (ma langue naturelle est le TCL ;-) ), je bute
sur un problème gênant :
j'ai créé un ensemble (modeste) de scripts dont le but est de gérer
l'accès à des répertoires sur un serveur web. Il s'agit en fait d'une
zone de téléchargement qui n'est pas en accès libre mais nécessite
d'être authentifié au préalable. Cette authentification est faite en
amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais ! Je suppose donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
Bonjour,
plutôt débutant en php (ma langue naturelle est le TCL ;-) ), je bute
sur un problème gênant :
j'ai créé un ensemble (modeste) de scripts dont le but est de gérer
l'accès à des répertoires sur un serveur web. Il s'agit en fait d'une
zone de téléchargement qui n'est pas en accès libre mais nécessite
d'être authentifié au préalable. Cette authentification est faite en
amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais ! Je suppose donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
Bonjour,
plutôt débutant en php (ma langue naturelle est le TCL ;-) ), je bute
sur un problème gênant :
j'ai créé un ensemble (modeste) de scripts dont le but est de gérer
l'accès à des répertoires sur un serveur web. Il s'agit en fait d'une
zone de téléchargement qui n'est pas en accès libre mais nécessite
d'être authentifié au préalable. Cette authentification est faite en
amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais ! Je suppose donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
Je donne des accès au téléchargement à de "gros" fichiers à des clients, et
j'ai déjà rencontré ceci qui est lié à leur OS:
IE6 ne télécharge pas plus de 2Go (4Go pour IE7).
Je donne des accès au téléchargement à de "gros" fichiers à des clients, et
j'ai déjà rencontré ceci qui est lié à leur OS:
IE6 ne télécharge pas plus de 2Go (4Go pour IE7).
Je donne des accès au téléchargement à de "gros" fichiers à des clients, et
j'ai déjà rencontré ceci qui est lié à leur OS:
IE6 ne télécharge pas plus de 2Go (4Go pour IE7).