Назад | Перейти на главную страницу

Ошибка CGI из PHP при запуске exec () в IIS

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)