Я использую PHP под IIS 6.
Когда я использую любую функцию PHP для запуска команд cmd (например, exec()
или же system()
), он всегда показывает «Доступ запрещен».
Даже такие команды, как ipconfig
показывают ту же ошибку «доступ запрещен». Я дал все разрешения моей папке проекта, но она не работала.
Пожалуйста, дайте мне знать кого-либо причину этого.
Когда вы выполняете какую-то команду, используя exec
, эта команда будет выполнена с учетной записью пользователя, на котором запущен IIS (который обычно IUSR_«machine-name»
на IIS 6), поэтому разрешения вашего проекта не имеют к этому никакого отношения.
Что вам нужно сделать, это оценить права доступа к файлу C:\Windows\System32\cmd.exe
и добавить разрешения для IUSR_«machine-name»
,
Кроме того, вам, вероятно, потребуется использовать CACLS для изменения списка контроля доступа. замещать IUSR_MachineName
на следующую команду для пользователя, выполняющего PHP, а затем выполните эту команду:
CACLS c:\windows\system32\cmd.exe /E /G IUSR_MachineName:F
Если вы получили ошибку и не можете изменить ACL, ваш последний ресурс должен сначала выполнить следующую команду:
takeown /F c:\windows\system32\cmd.exe
Вам также может потребоваться установить правильные разрешения и ACL для команд, которые вы пытаетесь выполнить (например, C:\Windows\System32\schtasks.exe
)
ЗаметкаДелайте это с осторожностью. Если у вас есть какая-то уязвимость, которая позволяет вашим пользователям выполнять команды, это может иметь неприятные последствия.
Других решений пока нет …