2016-05-02 43 views
1

我正在尝试使用lua从nginx访问redis值。当我在命令行上执行lua文件时,一切正常,我可以读取和写入redis值。但是,当我尝试从Nginx是由访问其中access_by_lua指令书面记录在错误日志文件找不到模块插座lua

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' 

,这是什么原因,我怎么能解决这个以下错误的地点执行相同的文件?

回答

1

由于代码执行命令而出现此错误require("socket") 此命令将在多个目录中搜索具有该名称的文件。如果成功,内容将作为Lua代码执行。如果不成功,你会得到你的错误信息。

为了解决这个问题,你必须添加包含文件要么系统变量LUA_PATH的路径,或者你有之前打个电话要求文件将其添加到全局表package.path。 Lua会替换?与名字会要求()

例如

package.path = package.path .. ";" .. thisPathContainsTheLuaFile .. "?.lua" 

请阅读:

http://www.lua.org/manual/5.3/manual.html#pdf-require

https://www.lua.org/pil/8.1.html

+0

挖进去后我解决了同样的方式这个问题。不过非常感谢你的回答。 –