J'ai besoin d'un script PHP pour avoir la permission d'écrire dans un répertoire. PHP 5.3 fonctionne comme FastCGI sous IIS 7 avec Windows Server 2008 en tant qu'OP. Sur mes journaux d'erreurs php, j'ai obtenu une "autorisation refusée" lorsque le script tente d'écrire un fichier.
Comment puis-je résoudre ce problème? J'ai essayé de donner tout droit à IIS_IUSR et à IUSR_myservername (avec un clic droit sur mon dossier) mais cela n'a pas fonctionné.
Toute aide serait très appréciée,
Cordialement,
Julien
J'ai la même configuration et je dois autoriser en écriture:
IUSR
IIS AppPool\<<AppPoolName>>
En fait, c'est un peu plus compliqué.
La première chose à faire est de créer un simple fichier PHP sur le site Web concerné. (Il est important de créer le fichier sur le site Web concerné car chaque site Web peut avoir un paramètre différent.) Le contenu de ce fichier doit être:
<?php var_dump(ini_get('fastcgi.impersonate')); ?>
Accédez à ce fichier à l'aide d'un navigateur.
** Cas 1 **
Si votre navigateur affiche:
string(1) "1"
Ensuite, vous devez exécuter la commande suivante (vous devez remplacer "Site Web par défaut" par le nom que vous avez donné à votre site Web dans IIS):
%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication
Vous recevrez une réponse qui ressemble à ceci:
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" userName="IUSR" />
</authentication>
</security>
</system.webServer>
Les informations que vous recherchez sont la valeur de l'attribut username
de la balise anonymousAutthentification
.
IIS AppPool\AppPoolName
(remplacez "AppPoolName" par le nom du pool d'applications de votre site Web).** Cas 2 **
Si votre navigateur affiche:
string(1) "0"
Vous devez donner des autorisations d'écriture à IIS AppPool\AppPoolName
(remplacez "AppPoolName" par le nom du pool d'applications de votre site Web).
Vous devez donner PHP l'autorisation d'écriture, pas IIS. Cela signifie que le compte utilisateur sur lequel PHP fonctionne sur nécessite une autorisation (probablement le même IIS est exécuté sur)).