Add writing permission to PHP on IIS 7

2019-01-21 09:35发布

问题:

I need a PHP script to have writing permission in a directory. PHP 5.3 is running as FastCGI under IIS 7 with windows server 2008 as OP. On my php error logs, I got "permission denied" when the script attempts to write a file.

How can I sort this out? I tried to give all right to IIS_IUSR and to IUSR_myservername (with a right click on my folder) but it didn't work.

Any help would be very appreciate,

Regards,

Julien

回答1:

I have the same setup and I have to give write permission to:

  • IUSR
  • IIS AppPool\<<AppPoolName>>


回答2:

Actually, it's a little bit more complicated.

The first thing to do is to create a simple PHP file on the concerned website. (It's important to create the file on the concerned website because each website can have a different setting.) The content of this file should be:

<?php var_dump(ini_get('fastcgi.impersonate')); ?>

Navigate to this file using a browser.

** Case 1 **

If your browser shows :

string(1) "1"

Then, you need to execute the following command (you need to replace "Default Web Site" by the name you gave to your website in IIS) :

%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication

You will receive an answer which looks like this :

<system.webServer>
  <security>
    <authentication>
      <anonymousAuthentication enabled="true" userName="IUSR" />
    </authentication>
   </security>
</system.webServer>

The information you are looking for is the value of the username attribute of the anonymousAutthentification tag.

  • If this value is not empty, its content is the name of the user you need to give write permissions to.
  • If this value is empty or if the attribute is simply missing, you need to give write permissions to IIS AppPool\AppPoolName (replace "AppPoolName" with the name of your website's application pool).

** Case 2 **

If your browser shows :

string(1) "0"

You need to give write permissions to IIS AppPool\AppPoolName (replace "AppPoolName" with the name of your website's application pool).



回答3:

You need to give PHP writing permission, not IIS. This means the user account that PHP is running on needs permission (probably the same one IIS is running on).