Windows Server 2003 x64
PHP 5.2
IIS 6.0
Программа Ink2Png.exe имеет разрешения «Все» -> «Чтение» и «Выполнение».
Как и его зависимость (microsoft.ink.dll)
Безопасный режим PHP отключен
exec () передается [полный путь к exe], пробел, [полный путь к другому файлу]
Этот другой файл также имеет полные права на чтение.
Выходной каталог имеет полные разрешения на запись.
Как только вызывается exec (), соединение прерывается, браузер даже не получает полный набор заголовков http и сообщает об ошибке CGI. Изучив вывод, оказалось, что программа даже не запускалась.
Любые идеи? Как я могу понять, что именно происходит, и снова запустить его?
РЕДАКТИРОВАТЬ: Кроме того, это приложение .NET, если это имеет какое-либо значение.
Для выполнения .exe
файл с PHP, вам потребуются разрешения на выполнение для cmd.exe
для IUSR_account. Очевидно, это очень плохо идея.
Какой код состояния сохраняется в журналах IIS для такой попытки?
Может быть, список расширений веб-служб препятствует выполнению? (мог бы подумать, что это маловероятно, ожидал бы только одного уровня блокировки исполняемых файлов, но вот и все)
@Patrick: Если вы дали только пользователю Everyone
доступа, тогда вам нужно будет добавить разрешения на чтение / выполнение для IUSR_<MachineName>
и IWAM_<MachineName>
а также и IIS_WPG
тоже, если у вас все еще есть проблемы. Не забудьте дать Write
доступ для всех этих пользователей и для вашего выходного каталога.
Чтобы не давать разрешение на cmd.exe, было бы лучше просто скопировать ваш .exe в каталог cgi-bin (переименовать его в .cgi в примере) и называть его оттуда как cgi? (небольшой пример; http://www.brinkster.com/KB/Article~KBA-01127-J2K8K3~PHP-call-out-to-cgi-script-example)