Добавить разрешение на запись в PHP на IIS 7 - PullRequest
34 голосов
/ 04 мая 2011

Мне нужен скрипт PHP, чтобы иметь разрешение на запись в каталог. PHP 5.3 работает как FastCGI под IIS 7 с Windows Server 2008 в качестве OP. В моих журналах ошибок php я получил «отказано в разрешении», когда скрипт пытается записать файл.

Как мне с этим разобраться? Я попытался передать все права IIS_IUSR и IUSR_myservername (щелкнув правой кнопкой мыши по моей папке), но это не сработало.

Любая помощь будет очень признателен,

С уважением,

Julien

Ответы [ 3 ]

67 голосов
/ 04 мая 2011

У меня такая же настройка, и я должен дать разрешение на запись:

  • IUSR
  • IIS AppPool\<<AppPoolName>>
25 голосов
/ 16 августа 2015

На самом деле все немного сложнее.

Первое, что нужно сделать, - это создать простой файл PHP на соответствующем веб-сайте.(Важно создать файл на соответствующем веб-сайте, поскольку каждый веб-сайт может иметь разные настройки.) Содержимое этого файла должно быть:

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

Перейдите к этому файлу с помощью браузера.

** Случай 1 **

Если ваш браузер показывает:

string(1) "1"

Затем вам нужно выполнить следующую команду (вам нужно заменить «Веб-сайт по умолчанию» на имяВы предоставили свой сайт в IIS):

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

Вы получите ответ, который выглядит следующим образом:

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

Информация, которую вы ищете, является значением username атрибут тега anonymousAutthentification.

  • Если это значение не пустое, его содержимым является имя пользователя, которому необходимо дать права на запись.
  • Если это значениепуст или если атрибут просто отсутствует, вам нужно дать разрешения на запись для IIS AppPool\AppPoolName (замените "AppPoolName" на имя пула приложений вашего сайта).

** Случай 2 **

Если ваш браузер показывает:

string(1) "0"

Вам необходимо дать разрешение на запись для IIS AppPool\AppPoolName (замените "AppPoolName" на имя пула приложений вашего сайта).

9 голосов
/ 04 мая 2011

Вам нужно дать PHP разрешение на запись, а не IIS. Это означает, что учетная запись пользователя, на которой работает PHP, нуждается в разрешении (вероятно, той же, на которой работает IIS).

...