
J’ai récemment été confronté à un souci gênant : lorsqu’un utilisateur uploadait un fichier sur mon site via un formulaire (en l’occurrence une image toute bête), celui-ci n’apparaissait pas sur le site. Je devais systématiquement aller sur le serveur (un IIS sous WS 2012) redonner sur le fichier en question les droits de lecteur à l’utilisateur IIS_IUSRS !
Bien évidemment, le chmod du FileSystem de Symfony2 n’aide en rien sur les environnements Windows… Je devais donc trouver l’origine ailleurs ; en tout cas pas dans le code.
Finalement j’ai trouvé la solution sur le forum même de IIS : en fait, le souci provient du fait que les fichiers uploadés transitent temporairement via un dossier de stockage sur le serveur. Celui-ci est fourni automatiquement par Windows, mais peut être modifié via le fichier php.ini et plus particulièrement via le paramètre : upload_tmp_dir.
La solution : évidente ; créer son propre dossier temporaire, le renseigner dans le PHP.INI et lui donner les droits en lecture et écriture pour les deux utilisateurs courants de IIS : IUSR et IIS_IUSRS. That’s it !