web-dev-qa-db-fra.com

Ajouter une autorisation d'écriture à PHP on IIS 7

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

35
JuCachalot

J'ai la même configuration et je dois autoriser en écriture:

  • IUSR
  • IIS AppPool\<<AppPoolName>>
68
tomfumb

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.

  • Si cette valeur n'est pas vide, son contenu est le nom de l'utilisateur auquel vous devez accorder des autorisations d'écriture.
  • Si cette valeur est vide ou si l'attribut est simplement manquant, vous devez donner des autorisations d'écriture à 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).

25
Tristan CHARBONNIER

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)).

9
Andrea