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

Windows Server 2003 x64

PHP 5.2

IIS 6.0

Программа Ink2Png.exe установлена ​​с правами Every->Read и Execute.

Как и его зависимость (microsoft.ink.dll)

Безопасный режим PHP отключен

exec() передается [полный путь exe], пробел, [полный путь к другому файлу]

Этот другой файл также имеет полные разрешения на чтение.

Выходной каталог имеет полные права на запись.

Как только исполняется exec(), соединение прерывается, браузер даже не получает полный набор заголовков http и сообщает об ошибке CGI. Изучив вывод, кажется, что программа даже не была запущена.

Есть идеи? Как я могу выяснить, что именно происходит, и снова запустить его?

РЕДАКТИРОВАТЬ: Кроме того, это приложение.NET, если это имеет какое-либо значение.

4 ответа

Чтобы не выдавать разрешение на cmd.exe, было бы лучше просто скопировать ваш.exe в каталог cgi-bin (переименовать его в.cgi в примере) и оттуда вызвать его как cgi? (небольшой пример; http://www.brinkster.com/KB/Article~KBA-01127-J2K8K3~PHP-call-out-to-cgi-script-example)

Какой код состояния хранится в журналах IIS для такой попытки?

Может ли это быть список расширений веб-служб, предотвращающий выполнение? (подумал бы, что это маловероятно, ожидал бы только одного уровня блокировки исполняемого файла, но все)

@ Патрик: Если вы только дали пользователю Everyone доступ, тогда вам нужно будет добавить разрешения на чтение / выполнение для IUSR_<MachineName> а также IWAM_<MachineName> а также и IIS_WPG тоже, если у вас все еще есть проблемы. Не забудьте дать Write доступ для всех этих пользователей для вашего выходного каталога, а также.

Выполнить .exe файл с PHP, вам понадобится разрешение на выполнение cmd.exe для IUSR_account. Очевидно, это очень плохая идея.

Другие вопросы по тегам