2011-04-21 79 views
0

我在Cygwin上运行Lighttpd。我有一个调用notepad.exe的BASH脚本的Lua CGI脚本。我的实际问题是运行一个C#应用程序,但我现在试图用记事本简化问题。Cygwin上的Lighttpd从Cygwin shell中有不同的PATH变量

当我调用CGI网页时,出现错误:notepad.exe:command not found 但是,当我从Cygwin shell运行BASH时,记事本运行正常,没有错误。

看起来像lighttpd运行时正在清理路径。我如何确保环境相同?

CGI(LUA):

#!/usr/bin/lua 

cmd = "/opt/abc/scripts/test.sh" 
local f = io.popen(cmd.." ; echo RC=$?") 
assert(f) 
local str = f:read'*a' 
f:close() 

print ("Content-type: Text/html\n") 
print ("<br><b>Output</b>: ", str) 
print ("</body></html>") 

BASH:

#!/bin/sh 

echo "Test.sh" 
echo "<br>PATH<br> $PATH<hr>" 

notepad.exe 2>&1 

回答

0

Lighttpd的正在对系统启动时启动的Windows任务调度,并没有需要用户先登录,这意味着服务器正在被在标记为非交互式的窗口'会话0'中开始。 More info on Windows Sessions

我的解决方案是将一个简单的批处理文件放入启动lighttpd的启动文件夹中。或者,我可以创建一个自动启动并确保与桌面交互选项被检查的cygwin服务。

0

你尝试用bash -l调用? 也 - 在脚本中设置路径有什么不对?

(没有cygwin的机器方便的进行测试)

+0

这没有帮助。我手动添加路径和记事本不'显示'。它显示在任务管理器中,但GUI窗口不显示。 – tuxGurl 2011-05-02 17:11:26

+1

@tuxGurl lighttpd是作为服务运行还是作为普通香草应用程序在窗口中运行?如果它的服务 - 您是否启用了与桌面交互的功能? – nhed 2011-05-05 13:30:57