Seuls certains fichiers téléchargés en PHP (exécutant Docker pour Windows)

J’ai des problèmes pour télécharger des fichiers depuis PHP. La chose étrange est que certains fichiers fonctionnent et d’autres pas. Je peux le reproduire avec le script suivant:

   
<?php var_dump($_FILES);

En cas d’échec, la sortie est la suivante:

 array(1) { ["fileToUpload"]=> array(5) { ["name"]=> ssortingng(13) "image_2_3.jpg" ["type"]=> ssortingng(0) "" ["tmp_name"]=> ssortingng(0) "" ["error"]=> int(3) ["size"]=> int(0) } } 

D’après ce que j’ai compris, le code d’erreur 3 indique qu’il s’agit d’un téléchargement partiel, mais je ne sais pas pourquoi cela se produit uniquement pour certains fichiers. Je ne peux pas voir un modèle dans les fichiers qui ne fonctionnent pas. Par exemple, l’un des fichiers qui ne fonctionne pas est d’environ 70 kb alors qu’un autre fichier qui fonctionne est de 180 kb, il ne semble donc pas y avoir de problème lié à la taille du fichier.

Je l’exécute sur un conteneur docker fonctionnant sous Windows 10. L’image du docker est basée sur l’image PHP officielle. J’ai testé les balises 5.5-apache et 5.6-apache. Le code lui-même s’exécute à partir d’un volume monté dans Windows.

Les modules Apache chargés sont:

 core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_host mod_authz_user mod_autoindex mod_deflate mod_dir mod_env mod_filter mod_headers mod_mime prefork mod_negotiation mod_php5 mod_rewrite mod_setenvif mod_status 

Toutes les idées sont les bienvenues.

EDIT: A fait un test isolé exécutant une image php: 5.5-apache simple, avec le code PHP juste mentionné et je suis toujours capable de reproduire le problème.

Dans mon dernier test, ce fichier a généré le problème: http://s000.tinyupload.com/?file_id=14588523736227077930

Considérant que celui-ci a fonctionné: http://s000.tinyupload.com/?file_id=03989814485857897493

Après quelques recherches, j’ai découvert qu’il s’agissait d’une question ouverte récemment mentionnée sur les forums Docker: https://forums.docker.com/t/php-file-upload-fails-with-upload-err-partial-on- docker-for-windows / 18252

La solution de contournement actuelle (que j’ai testée) consiste à utiliser http://docker ou docker.local au lieu de http://localhost lors de l’access à l’application via le navigateur.