Bonjour,
Je ne sais pas si je suis au bon endroit pour poster ceci, car ce topic est destiné à être une info pour ceux qui voudrait utiliser ou essaient d’utiliser l’excellent snippet et plugin associé, FileDownload et FileDownloadPlugin et qui ont infomaniak.ch comme hébergeur.
Bien entendu ceux qui rencontre la même erreur chez un autre hébergeur pourront y remédier de la même façon.
Après quelques recherches pour paramétrer FileDownload 2.5, je me suis retrouvé face à cette erreur :
« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
PHP error debug
Error: set_time_limit() has been disabled for security reasons
Error type/ Nr.: Warning - 2
File: /home/www/1263ae0777d4b1e0614a6d52b51e5e45/web/modx/manager/includes/document.parser.class.inc.php(724) : eval()’d code
Line: 154
Parser timing
MySQL: 0.0358 s (60 Requests)
PHP: 0.1328 s
Total: 0.1686 s
Cette erreur est due au fait que infomaniak.ch a désactivé, pour des raisons de sécurité, la fonction php "set_time_limit()" et a limité le temps d’exécution d’un script à 10 sec. maxi, par défaut php limite à 30 sec (set_time_limit() permet de changer cette valeur).
Donc pour pouvoir malgré tout utiliser FileDownload, il suffit d’aller commenter l’appel de la fonction dans FileDownloadPlugin, c’est vers la fin du script (dernier tier). voici la partie concernée :
if($fp = @fopen($downloadFile, "r"))
{
while(@ob_end_clean());
//set_time_limit(0); <--- l’appel de la fonction commentée
ignore_user_abort(1);
$aborted = false;
for($rno = 0; !$aborted && (($rno < $parts) || (!$rno && !$parts)); $rno ++)
{..etc...
Et voilà ça fonctionne, vos visiteurs peuvent télécharger des fichiers depuis votre site
Seul inconvénient :
Cette fonction à cet endroit dit :
exécuter ce script sans limite de temps et en tâche de fond (ignore_user_abort(1)).
On se retrouve, sans cet appel, à une limite de temps de 10 sec d’exécution (chez infomaniak), ce qui posera un problème avec les très gros fichiers qui demandent plus de 10 sec. de traitement, car l’exécution s’arrêtera après 10 sec et renverra une erreur fatale

Il faut juste le savoir et faire avec
Attention, ne pas confondre le temps d’exécution du script et le temps de téléchargement du fichier, ce n’est pas la même chose !
En espérant que ça rendra service....