Nginx 找不到模块插槽lua
我正在尝试使用lua从nginx访问redis值。当我在命令行上执行lua文件时,一切都正常,我能够读写redis的值。但当我试图通过访问写入access_by_lua指令的位置从nginx执行相同的文件时,错误日志文件中记录了以下错误Nginx 找不到模块插槽lua,nginx,lua,redis,Nginx,Lua,Redis,我正在尝试使用lua从nginx访问redis值。当我在命令行上执行lua文件时,一切都正常,我能够读写redis的值。但当我试图通过访问写入access_by_lua指令的位置从nginx执行相同的文件时,错误日志文件中记录了以下错误 no field package.preload['socket'] no file '/home/sivag/redis/redis-lua/src/socket.lua' no file 'src/socket.lua' no file '/home/si
no field package.preload['socket']
no file '/home/sivag/redis/redis-lua/src/socket.lua'
no file 'src/socket.lua'
no file '/home/sivag/lua/socket.lua'
no file '/opt/openresty/lualib/socket.so'
no file './socket.so'
no file '/usr/local/lib/lua/5.1/socket.so'
no file '/opt/openresty/luajit/lib/lua/5.1/socket.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
这是什么原因?我如何解决这一问题?由于代码执行命令
require(“socket”)
此命令将在多个目录中搜索具有该名称的文件。如果成功,内容将作为Lua代码执行。如果不成功,您将收到错误消息
要解决此问题,您必须在需要文件之前,将包含文件的路径添加到系统变量LUA_path,或者将其添加到全局表package.path
。
Lua会取代吗?使用您为require()指定的名称
比如说
package.path = package.path .. ";" .. thisPathContainsTheLuaFile .. "?.lua"
请阅读:
在我的例子中,我只需要安装
lua socket
包,因为socket库并不像在其他一些语言中那样内置在默认的lua安装中。在深入研究之后,我以同样的方式解决了这个问题。不过,非常感谢你的回答。