Téléversement de gros fichiers > 512 Mo¶
La taille de fichier maximale par défaut pour les téléversements est de 512 Mo. Vous pouvez augmenter cette limite en fonction de ce que permet votre système d’exploitation. Certaines limites matérielles ne peuvent être dépassées :
- < 2 Go sur une architecture 32 bits
- < 2 Go sur Windows (32 bits et 64 bits)
- < 2 Go avec un serveur en version 4.5 ou précédente
- < 2 Go avec Internet Explorer 6 à 8
- < 4 Go avec Internet Explorer 9 à 11
Les systèmes de fichiers 64 bits ont des limites beaucoup plus hautes. Veuillez consulter la documentation de votre système d’exploitation pour plus de détails.
Note
Le client de synchronisation ownCloud n’est pas affecté par ces limites car il téléverse les fichiers par petits bouts.
Configuration système¶
- Assurez-vous d’avoir la dernière version de PHP installée (au moins 5.4.9) ;
- désactivez les quotas utilisateur pour les rendre illimités ;
- votre répertoire ou partition temporaire doit être suffisamment grande pour accepter des téléversements parallèles de plusieurs utilisateurs. Par exemple si la taille de téléversement maximale est de 10 Go et que le nombre moyen d’utilisateurs effectuant des téléversements en même temps est de 100, l’espace temporaire doit être d’au moins : 100 × 10 Go.
Configuration du serveur Web¶
Note
ownCloud fournit son propre fichier owncloud/.htaccess. Parce que php-fpm ne peut pas lire les paramètres PHP dans .htaccess, ces paramètres doivent être définis dans le fichier owncloud/.user.ini.
Définissez les deux paramètres suivants dans le fichier php.ini correspondant (consultez la section Fichier de configuration chargé de Informations et version de PHP pour trouver les fichiers php.ini correspondants)
php_value upload_max_filesize = 16G
php_value post_max_size = 16G
Ajustez ces valeurs selon vos besoins. Si vos observez des délais de temporisation dépassés dans vos fichiers journaux, augmentez ces valeurs, exprimées en secondes:
php_value max_input_time 3600
php_value max_execution_time 3600
Le module Apache mod_reqtimeout peut aussi empêcher les gros téléversements de se terminer. Si vous utiliser ce module et que les téléversements de gros fichiers échouent, désactivez ce module dans la configuration d’Apache ou augmentez la valeur RequestReadTimeout.
Il existe aussi plusieurs autres options de configuration de votre serveur Web qui peuvent empêcher le téléversement de gros fichiers. Veuillez consulter la documentation de votre serveur Web pour savoir comment configurer ces valeurs correctement :
Apache avec mod_fcgid¶
Note
Si vous utilisez Apache 2.4 avec mod_fcgid, à ce jour, février/mars 2016, FcgidMaxRequestInMem nécessite encore d’être augmenté significativement par rapport à sa valeur par défaut pour éviter les erreurs de segmentation lors des téléversements de gros fichiers. Ce n’est pas le paramètre adapté mais sert de moyen de contournement pour le bogue 51747 : Apache avec mod_fcgid.
L’augmentation significative de la valeur de FcgidMaxRequestInMem ne sera peut-être plus nécessaire une fois le bogue 51747 corrigé.
nginx¶
Depuis nginx 1.7.11, une nouvelle option de configuration fastcgi_request_buffering est disponible. Définir cette option à fastcgi_request_buffering off; dans votre configuration nginx pourrait vous aider avec les délais de temporisation (timeout) pendant le téléchargement. De plus, cela peut aider si vous manquez d’espace disponible sur la partition /tmp de votre système.
Pour plus d’informations sur la configuration de nginx pour augmenter la taille limite des téléversements, consultez également cette page du wiki.
Note
Assurez-vous que client_body_temp_path pointe vers une partition avec une taille adaptée pour votre taille de fichier téléversé, et sur la même partition que upload_tmp_dir ou tempdirectory (voir ci-dessous). Pour des performances optimales, placez-les sur des disques différents dédiés à l’espace d’échange et au stockage temporaire.
Si votre site se trouve derrière un frontal nginx (pour de l’équilibrage de charge par exemple) :
Par défaut, les téléchargements seront limités à 1 Go à cause de proxy_buffering et proxy_max_temp_file_size sur le frontal.
- Si vous avez accès à la configuration du frontal, désactivez proxy_buffering ou augmentez proxy_max_temp_file_size la valeur par défaur de 1 Go.
- Si vous n’avez pas accès à la configuration du frontal, définissez l’en-tête X-Accel-Buffering à add_header X-Accel-Buffering no; sur votre site.
Configuration de PHP¶
Si vous ne voulez pas utiliser les fichiers .htaccess ou .user.ini d’ownCloud, vous pouvez configurer à la place PHP. Assurez-vous de mettre en commentaire les lignes .htaccess concernant la taille de téléversement le cas échéant.
Si vous utilisez ownCloud sur un système 32 bits, la directive open_basedir de votre fichier php.ini décommentée.
Ajustez les deux paramètres suivants du fichier php.ini selon vos besoins:
upload_max_filesize = 16G
post_max_size = 16G
Indiquez à PHP le répertoire temporaire que vous voulez utiliser:
upload_tmp_dir = /var/big_temp_file/
Output Buffering doit être désactivé dans les fichiers .htaccess, .user.ini ou php.ini, sans quoi, PHP renverra des erreurs relatives à la mémoire :
- output_buffering = 0
Configuration d’ownCloud¶
Une alternative à l’utilisation du paramètre PHP upload_tmp_dir est possible (par exemple, si vous n’avez pas accès au fichier php.ini). Vous pouvez configurer le répertoire temporaire pour les fichiers téléversés en utilisant le paramètre tempdirectory du fichier config.php (voir Paramètres de Config.php).
Si vous avez configuré le paramètre session_lifetime dans le fichier config.php (voir Paramètres de Config.php), assurez-vous qu’il n’est pas trop bas. La valeur de ce paramètre (en secondes) doit être au moins équivalente à la durée que prend le téléversement du fichier le plus long. Si vous n’êtes pas sûr, enlevez-le complètement de votre configuration en le réinitialisant à sa valeur par défaut, tel qu’indiqué dans le fichier config.sample.php.
Configuration des limites dans l’interface graphique¶
Si tous les prérequis indiqués dans cette documentation sont en place, un administrateur peut modifier les limites pour la taille des téléversements en utilisant la boîte de saisie Gestion de fichiers dans l’interface d’administration d’ownCloud.
Selon votre environnement, vous pourriez avoir un message indiquant que vous n’avez pas les autorisations suffisantes pour modifier ce paramètre.
Pour pouvoir modifier ce paramètre dans l’interface graphique, vous devez vous assurez que :
- le serveur Web peut utiliser le fichier .htaccess fourni par ownCloud (Apache seulement) ;
- l’utilisateur utilisé pour exécuter le serveur Web ait les permissions d’écriture sur les fichiers .htaccess et .user.ini
La Renforcement des permissions de répertoires peut empêcher l’accès en écriture à ces fichiers. En tant qu’administrateur, il vous appartient de décider si vous voulez avoir la possibilité d’utiliser cette boîte de saisie ou une installation d’ownCloud plus sécurisée où vous devrez modifier manuellement cette valeur dans les fichiers .htaccess et .user.ini décrits ci-dessus.
Problèmes généraux de téléversements¶
Divers facteurs peuvent provoquer une restriction de la taille de téléversement. Par exemple :
- LVE Manager de CloudLinux définit une limite I/O limit ;
- certains services comme Cloudflare sont aussi connus pour provoquer des problèmes de téléversements ;
- les limites de téléversements mises en œuvre par les serveurs proxy utilisés par vos clients ;
- d’autres modules de serveurs Web comme ceux décrits dans Dépannage général.