Подтвердить что ты не робот

Добавление разрешения на запись в PHP на IIS 7

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

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

Любая помощь будет очень оценена,

Привет,

Жюльен

4b9b3361

Ответ 1

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

'IUSR' и 'IIS AppPool\AppPoolName'

Ответ 2

Собственно, это немного сложнее.

Первое, что нужно сделать, это создать простой файл 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" на имя пула приложений вашего веб-сайта).

Ответ 3

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