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

标签 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"

我得到以下输出:

Error!

attempt to call a nil value

但是,有些模块确实可以工作,例如:

require "base"

按预期运行。

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

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

据我所知,它适用于任何纯 lua 模块,但任何具有 cmodules 的东西(套接字等)都会导致问题。

附加信息:

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

最佳答案

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

在你的情况下,我假设

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

应该可以解决问题。

关于windows - 如何在 Apache 中设置 mod_lua 以访问第三方 Lua 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9696771/

相关文章:

c++ - 每个应用程序实例超过一个 Audio Session

windows - 我可以使用 Windows XP 进行 Windows Azure 开发吗

使用简单文件上传脚本时出现PHP错误: failed to open stream: No such file or directory

windows - Apache DocumentRoot 到虚拟主机的网络目录

windows - 使用 Windows 上的 docker 卷(仅在 docker 容器内)或使用主机操作系统安装/共享卷的读/写性能更好?

windows - 通过启动命令返回变量

apache - 带有反向链接的 cPanel 辅助 IP 的 SSL 错误

lua - 对 lua 的 os.clock 的精度感到困惑

algorithm - 创建三次和/或二次贝塞尔曲线以适应路径

c - 使用具有复杂类型的 Lua FFI