openwrt uhttpd php,Lua作为CGI脚本在OpenWrt上响应uhttpd的http访问

uhttpd是OpenWrt上经常使用的、轻量级的响应http申请的web服务器,可以将申请分发给文件、CGI解释器(cgi_prefix,解释器一般为perl或者是php-cgi)或者Lua解释器(lua_prefix)。

由于使用Lua解释器开发时,由lua_handler指定的.lua文件每次修改都需要重新启动uhttpd才能生效,因此将.lua文件作为CGI脚本来调试会方便很多。

这里先以标准的Lua解释器配置为例,看uhttpd如何配置标准的lua_prefix:

编辑文件:“/etc/config/uhttpd”,将其中的:

#option lua_prefix /luci

#option lua_handler

/usr/lib/lua/luci/sgi/uhttpd.lua

去掉符号“#”(即去掉注释),并修改为:

option lua_prefix /lua

option lua_handler /root/http.lua

保存退出(如果使用“vi”编辑,按ESC键,再输入“:x”,回车键即可保存退出)。

请确认存在“/root/http.lua”文件,并且其内容中包含一个名为handle_request函数,内容如下:

#!/usr/bin/lua

function handle_request(env)

uhttpd.send("hello, world")

end

使用命令“/etc/init.d/uhttpd

restart”重新启动uhttpd服务,然后使用浏览器访问“http://{openwrt_ip}/lua/http.lua”,即可以看到.lua文件的响应内容。

下面进入正题,需要配置将Lua当作CGI脚本解释器使用。

编辑文件:“/etc/config/uhttpd”​,将其中的:

​option lua_prefix /lua

option lua_handle /root/uhttpd.lua

在这两行前添加符号“#”(即注释掉这两行)。

并同时将其中的:

option cgi_prefix /cgi-bin​

去掉注释,再添加下面这行:​

list interpreter ".lua=/usr/bin/lua"

保存退出。

请确认存在​“/www/cgi-bin”目录,同时该目录下存在文件“date.lua”,该文件内容如下:

#!/usr/bin/lua

​io.write("Content-type:

text/html\n\n")

io.write(os.date("%x", os.time()))​

重新启动uhttpd服务,然后使用浏览器访问“http://{openwrt_ip}/cgi-bin/date.lua”,即可以看到“date.lua”输出的当前系统的日期。

特别注意:CGI脚本必须要输出“Content-type:

text/html\n\n”,uhttpd才会认为脚本正确进行了响应,才会输出内容到浏览器。​

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值