如何在Apache中设置mod_lua来访问第三方Lua模块?

时间:2012-03-14 06:07:32

标签: windows apache lua xampp

我正在尝试为Apache设置mod_lua模块,但在访问第三方Lua模块时遇到了困难。假设我在Apache的htdocs文件夹中有一个hello_world.lua,其中包含以下内容:

require "apache2"

function handle(r)
  r.content_type = "text/html"
  r:write "Hello World from <strong>mod_lua</strong>."
  return apache2.OK
end

然后我去“http://localhost/hello_world.lua”,它将按预期运行。但是,如果我尝试添加一行,例如:

require "socket"

或者

require "cgilua"

我得到以下输出:

  

错误!

     

尝试调用零值

但是,某些模块可以正常工作,例如:

require "base"

按预期运作。

如果我导航到文件系统中的base.lua(c:\ program files \ lua \ 5.1 \ lua \ base.lua)并删除此文件,然后尝试运行我的脚本我得到与上述相同的错误。所以这必须是mod_lua检查模块的目录。模块dll不在这个文件夹中,而是在c:\ program files \ lua \ 5.1 \ clibs \中,我将环境变量LUA_CPATH设置为指向。

Luasocket和cgilua都存在于此文件夹中,但当我尝试在我的脚本中要求它们时它们会导致错误。

从我可以收集到的内容,它适用于任何纯lua模块,但任何具有cmodules(套接字等)的东西都会导致问题。

其他信息:

需要做些什么才能在mod_lua运行的脚本中需要模块?

1 个答案:

答案 0 :(得分:3)

看起来您需要将LuaPackageCPath和/或LuaPackagePath指令添加到您的站点配置中(在全局配置文件中,或.htaccess,...)。

在你的情况下,我假设

LuaPackagePath c:\program files\lua\5.1\lua\
LuaPackageCPath c:\program files\lua\5.1\clibs\

应该这样做。