J'essaie de télécharger un fichier de taille 1 Go à l'aide du script PHP et fonctionne parfaitement si la taille du fichier est inférieure à 20 Mo, mais lorsque j'augmente la taille du fichier qu'après avoir appuyé sur le bouton de téléchargement sur site Web, il télécharge le fichier (je suppose Comme il faut quelques minutes) et après cela, pour exécuter upload.php, mon firefox me demande de télécharger upload.php, donc je suppose que le fichier est en cours de téléchargement, mais mon script PHP ne parvient pas à exécuter. P>
Aussi après la recherche dans Google, j'ai trouvé des paramètres suivants pour php.ini que j'ai fabriqués et ma fonction php_info () me montre que les paramètres ont été modifiés. P>
/ * php.ini commence em> * strong> / p>
memory_limit = 512m p>
post_max_size = 15000m p>
fichier_uploads = sur p>
upload_max_filesize = 15000m p>
max_input_time = 20000 p>
max_execution_time = 20000 p>
session.gc_maxlifetime = 20000 p>
/ * php.ini fin em> * strong> / p>
3 Réponses :
Vérifiez que votre serveur Web permet également de tels téléchargements importants. Sur Apache, le réglage est LimileRequestbody code>
. Cette limite est appliquée bien avant que PHP ne pénètre jamais dans l'image et ne peut pas être modifié / envahi de la PHP. P>
La limite des téléchargements de taille de fichier est limitée par beaucoup plus que PHP. PHP a ses limites, Apache a ses limites, de nombreux services Web ont leurs propres limites, puis vous avez la limite de la taille du répertoire TMP qui pourrait être définie par des autorisations utilisateur sur un hôte partagé. Sans parler de ne pas manquer d'espace disque! P>
Votre php.ini a l'air bien, mais comme on l'a déjà suggéré - Vérifiez le fonctionnement limiteRequest à Apache et assurez-vous que votre service Web le permet. P>
Une solution commune Lorsque vous devez télécharger de très gros fichiers consiste à utiliser Flash ou Java sur le côté client, car ils ont accès au système de fichiers actuel du client. Le flash / Java peut ensuite casser le fichier en petits morceaux qui sont envoyés un à la fois et réassemblés du côté serveur. Cela a de multiples avantages. Tout d'abord, vous pouvez reprendre des téléchargements brisés. Deuxièmement, vous n'avez pas à vous soucier des scripts chronométrés. Troisièmement, il contourne toutes les limites de système de fichiers éventuelles pouvant être en jeu à partir de PHP, Apache, des services Web ou d'autres sources. P>
Steven, maintenant je suis capable de télécharger un fichier 100MB en ajoutant un fichier .htaccess dans mon dossier de site Web, c'est comme ci-dessous:
httpd.apache.org/docs/current/mod/core.html# LimiteRequestbody Assurez-vous de spécifier en octets limitRequestbody 1073741824 CODE> et assurez-vous également que votre serveur Web permet à cette commande. Certains serveurs Web ont un contrôle externe en place pour vous assurer que trop de données ne sont pas envoyées dans une seule demande. Cela sauve leur bande passante et les sauve finalement de l'argent. Si cela le permet, vous devriez pouvoir le placer à la fin de votre fichier .htaccess. Je recommande de la mettre dans le même dossier que votre script de téléchargement pour empêcher les attaques de DOS sur votre WeBroot.
post_max_size = 15000m code> devrait être supérieur à celui
upload_max_filesize = 15000m code>.
Il peut être soit
post_max_size = 15001m code>. J'ai augmenté pour 1 fort> plus. P>
En fait, je fais un site Web qui peut télécharger des fichiers et que l'utilisateur peut partager le lien de fichier avec d'autres utilisateurs ...
En tant que note latérale: Si vous téléchargez un fichier 1 Go, vous devez utiliser un téléchargeur de flash (quel Gmail / YouTube / etc UTILISER pour le téléchargement avancé) car il permet une traînée et une perte faciles, mais surtout, une barre de progrès attrayante visuellement .
@Kranu, votre idée est très bonne, elle augmentera certainement la convivialité .. Je vais le faire une fois que j'ai trouvé la solution de ma problématique ...