1 GO de téléchargement de fichiers à l'aide de php
Je suis en train de télécharger un fichier de 1 GO taille à l'aide de php script et il fonctionne parfaitement si la taille du fichier est inférieure à 20 mo, mais quand j'augmente la taille du fichier qu'après avoir appuyé sur le bouton de téléchargement sur le site web, il télécharge le fichier (je suppose que cela prend quelques minutes) et après cela, au lieu d'exécuter upload.php mon firefox me demande de le télécharger upload.php, donc, je suppose, le fichier est téléchargé, mais mon script php ne parvient pas à exécuter.
Aussi, après une recherche dans google, j'ai trouvé paramètres suivants pour php.ini que j'ai fait et mon php_info() la fonction me montre que les paramètres ont été modifiés..
/*php.ini commencer*/
memory_limit = 512M
post_max_size = 15000M
file_uploads = On
upload_max_filesize = 15000M
max_input_time = 20000
max_execution_time = 20000
session.gc_maxlifetime = 20000
/*php.ini fin*/
- Pourquoi télécharger un fichier volumineux à l'aide d'un script php? Fou. Utiliser le FTP.
- 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...
- Comme une note de côté: Si vous téléchargez un fichier de 1 go, vous devez utiliser un Flash Uploader (ce que Gmail/Youtube/etc utiliser pour le dépôt avancé), car il permet de faire facilement glisser-déposer, mais le plus important, un visuel attrayant barre de progression.
- votre idée est très bonne, il va certainement augmenter la facilité d'utilisation.. je vais le faire une fois que j'ai trouver ma solution du problème...
Vous devez vous connecter pour publier un commentaire.
La limite de taille de fichier uploads est limitée par un BEAUCOUP plus que juste le PHP. PHP a ses limites, Apache a ses limites, de nombreux services web ont leurs propres limites, et puis vous avez de la limite sur le répertoire /tmp de taille qui pourraient être fixées par les autorisations de l'utilisateur sur un ordinateur hôte partagé. Pour ne pas mentionner juste en cours d'exécution hors de l'espace sur le disque dur!
Votre php.ini semble bon, mais comme l'a déjà suggéré - vérifier la LimitRequestBody dans Apache et assurez-vous que votre service web qui permet cela.
Une commune de la solution lorsque vous avez besoin de télécharger des fichiers de très grande taille est d'utiliser le Flash ou Java sur le côté client, puisque ceux-ci ont accès au client réel du système de fichiers. Le Flash/Java peut alors diviser le fichier en petits morceaux qui sont envoyés un à la fois et ré-assemblé sur le côté serveur. Cela a de multiples avantages. Tout d'abord, vous pouvez reprendre les téléchargements interrompus. Deuxièmement, vous n'avez pas à vous soucier de tous les scripts d'expirer. Troisièmement, il ignore les éventuelles limites du système de fichiers qui peuvent être en jeu à partir de PHP, Apache, des services web ou d'autres sources.
LimitRequestBody 1073741824
et aussi assurez-vous que votre serveur web permet à cette commande. Certains serveurs web externes ont mis en place des contrôles pour s'assurer de trop de données n'est pas d'être envoyés en une seule requête. Cela leur permet d'économiser de la bande passante et permet au final d'économiser de l'argent. Si c'est vous le permet, vous devriez être en mesure de le placer à la fin de votre .fichier htaccess. Je recommande de mettre dans le même dossier que votre script d'upload pour empêcher les attaques par déni de service sur la racine de votre site.Vérifiez que votre serveur web permet également de tels ajouts importants. Sur Apache sur le paramètre est
LimitRequestBody
. Cette limite est d'être longue avant de PHP n'entre dans l'image et ne peut pas être modifié/changé de dans PHP.