如何在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>。”
     返回apache2.OK
end

如果我转到“ http://localhost/hello_world.lua”,那将像预期的那样运行。但是,如果我尝试添加这样一行:

require "socket"

或者

需要“ cgilua”

我会得到以下输出:

错误!

尝试调用空值

但是,某些模块确实可以使用,例如:

需要“基础”

那像预期那样运行。

如果我导航到文件系统中的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模块都正常工作,但是任何同时具有c模块(例如socket等)的模块都会导致问题。

附加信息:

-操作系统:Windows 7 Home Premium

必须执行什么操作才能在由mod_lua运行的脚本中要求模块?

原文链接 https://stackoverflow.com/questions/9696771

点赞
stackoverflow用户1051634
stackoverflow用户1051634

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

在你的情况下,我想应该可以用以下代码解决问题:

LuaPackagePath c:\program files\lua\5.1\lua\
LuaPackageCPath c:\program files\lua\5.1\clibs\
2012-03-15 22:04:19