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

我正在尝试为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”,这将按预期的function。 但是如果我尝试添加一行如:

 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 \中,我将其设置为指向的环境variablesLUA_CPATH。

Luasocket和cgilua都出现在这个文件夹中,但是当我尝试在我的脚本中要求它们时,它们会导致错误。

从我可以收集,它可以正常工作与任何纯粹的lua模块,但任何具有cmodules(套接字等)导致问题。

附加信息:

  • 操作系统:Windows 7家庭高级版
  • LUA_PATH = c:\ program files \ lua \ 5.1 \ lua \
  • LUA_CPATH = c:\ program files \ lua \ 5.1 \ clibs \
  • Apache版本:2.2.22
  • mod_lua版本: http : //www.corsix.org/content/mod-lua-win32#comment-3214

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

Solutions Collecting From Web of "如何在Apache中设置mod_lua来访问第三方Lua模块?"

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

在你的情况下,我会假设

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

应该做的伎俩。