Windows Server 2003 x64
PHP 5.2
IIS 6.0
程序 Ink2Png.exe 设置了 Everyone->Read 和 Execute 权限。
其依赖项也是如此(microsoft.ink.dll)
PHP 安全模式已关闭
exec() 传递 [完整的 exe 路径]、空格、[另一个文件的完整路径]
该其他文件也具有完全读取权限。
输出目录具有完全的写入权限。
一旦执行 exec(),连接就会断开,浏览器甚至不会收到完整的 http 标头集,并且会报告 CGI 错误。检查输出,似乎程序根本没有运行。
有什么想法吗?我怎样才能弄清楚到底发生了什么,并让它再次运行?
编辑:此外,如果它有任何重要意义的话,它是一个.NET 应用程序。
答案1
@Patrick:如果您只授予用户访问权限,那么如果您仍然遇到问题,Everyone
则需要为和添加读取/执行权限IUSR_<MachineName>
以及IWAM_<MachineName>
和也添加权限。请记住也为所有这些用户授予输出目录的访问权限。IIS_WPG
Write
答案2
对于此类尝试,IIS 日志中存储了什么状态代码?
可能是 Web 服务扩展列表阻止了执行?(本来以为不太可能,只期望单级可执行阻止,但事实确实如此)
答案3
要使用 PHP 执行.exe
文件,您需要cmd.exe
IUSR_account 的执行权限。显然,这是一个很坏主意。
答案4
为了不必授予 cmd.exe 权限,最好将 .exe 复制到 cgi-bin 目录(例如,将其重命名为 .cgi)并从那里将其作为 cgi 调用?(一个小例子;http://www.brinkster.com/KB/Article~KBA-01127-J2K8K3~PHP-call-out-to-cgi-script-example)