PHP CGI | IIS | Разрешения за изпълнение

Имам PHP страница, която използва командата shell_exec:

$psscriptpath = "C:\inetpub\htdocs\school_panel\scripts\change.ps1";
            shell_exec("powershell.exe -executionpolicy remotesigned -File " . $psscriptpath . " -username \"" . $username . "\" -password \"" . $password . "\"");

Въпреки това, когато изпратя страницата, известна още като кодът по-горе, се изпълнява, моята страница просто изтича (никога не завършва зареждането, докато не бъде достигнат таймерът за изчакване и получавам тази грешка): въведете описание на изображението тук

http://puu.sh/aXEdY/22cc87310c.png

Сега направих някои проучвания и изглежда, че трябва по някакъв начин да задам някакви разрешения/права за изпълнение на скрипт в IIS/PHP? може би да промените някои конфигурации на php.ini? Наистина не съм сигурен.

Вече се опитах да добавя разрешения за powershell за IUSER и т.н. Дори зададох политиката за изпълнение на powershell на remotesigned. Изглежда, че имам инсталиран FastCGI и CGI модул на IIS.

Също така се опитах да стартирам скрипта чрез CMD, използвайки php и той РАБОТИ, само не в браузъра.

за разбирането


person user3714214    schedule 19.08.2014    source източник
comment
Никой няма идеи?   -  person user3714214    schedule 21.08.2014


Отговори (1)


Вашето решение е толкова просто, колкото това:

shell_exec("powershell.exe -executionpolicy remotesigned -File {$psscriptpath} -username {$username} -password {$password} < NUL");

Не е необходимо да ограждате параметрите в двойни кавички и за да предотвратите висене на powershell, трябва да подадете < NUL в края на реда.

< NUL ще принуди изхода от PowerShell обратно към PHP.

person Barry Chapman    schedule 21.08.2014