Dans la plupart des cas vous pourrez faire fonctionner ces exemples sans modification.
1/ En cas de problème commencer par cliquer sur ce lien
"Test_dossiers.php" pour contrôler les autorisations requises pour lire et écrire dans les dossiers de destination d'upload. Toutes les lignes doivent retourner "status ok", sinon attribuer des droits d'accès suffisants aux dossiers avec votre logiciel FTP.
2/ Une fois le contrôle réussi, si un problème persiste la valeur critique à modifier est la valeur des fragments, soit dans mes exemples : "$UpAbci_fragmentSize".
Tous les fichiers
- exceptés "UploadAjaxABCI_Basique.php" et "UploadAjaxABCI_Redimensions.php" où j'ai voulu garder un code le plus concis possible - incluent une vérification de la configuration "upload_max_filesize" du serveur pour contrôler la valeur maximale des fragments. Cela suffit pour un serveur correctement configuré, mais tous ne le sont pas...
Par exemple le "php.ini" de
wampserver avec php 5.5.12 (version 2.5 64bits) affiche une valeur "upload_max_filesize" de 64Mo mais une valeur "post_max_size" de 3M, soit un conteneur plus de 20 fois plus petit que la taille maximale autorisée des fichiers qu'il peut contenir... On met habituellement une valeur de "post_max_size" au moins égale à la valeur de "upload_max_filesize", c'est pour cette raison que je ne teste que cette valeur qui est normalement la plus limitante.
Pour aller plus loin j'aurais pu donner un exemple qui contrôle aussi la valeur de "post_max_size", mais essayer de parer une mauvaise configuration serveur est une lutte sans fin et d'autres valeurs peuvent intervenir. Par exemple
certains serveurs "nginx" ont (ou avaient) par défaut une configuration serveur "client_max_body_size" de 1Mo qui va également limiter la taille de l'upload.
En cas de problème vous pouvez définir la valeur des fragments à 1Mo, puis augmenter par pas de 1 mega.
Lors des tests si vous obtenez systématiquement le message d'erreur :
"
Connexion non valide ou perdue. Rafraîchissez la page et recharger votre fichier, si celui-ci dispose d'une sauvegarde automatique elle sera utilisée."
Deux erreurs sont possibles :
- Les sessions ne fonctionnement pas (très rare).
- Plus probablement la taille des fragments est supérieure à ce que peut supporter le serveur. Appliquez alors une modification de la taille des fragments comme indiqué ci-dessus ou optimisez la configuration de votre serveur.
Si la valeur de "post_max_size" est dépassée alors les super globales $_POST et $_FILES sont nulles. Le jeton de contrôle du formulaire sera invalide puisqu'il transite dans une variable $_POST. D'où le message d'erreur renvoyé par le script php d'upload. Ce message sera pertinent en production car une fois bien configuré le principal problème possible constaté est une perte de connexion qui peut intervenir après plusieurs heures d'uload en continu sur un serveur mutualisé d'entrée de gamme (sans doute une limitation pour économiser des ressources serveur).
3/ Si vous obtenez le message "
Fichier temporaire non valide." il est probable que vous avez essayé de télécharger simultanément le même fichier depuis le même formulaire dans des onglets différents. Voir la note n°4 en fin du mode d'emploi pour plus d'explications.