2016-05-02 29 views
1

nginxからredis値にアクセスするためにluaを使用しようとしています。コマンドラインでluaファイルを実行すると、すべてが正常です。私はredisに値を読み書きできます。しかし、私試みがaccess_by_luaディレクティブが次のエラーが書き込まれている場所にアクセスすることによって、nginxのから同じファイルを実行するには、この理由で、どのように私はこの問題を解決することができますどのようなモジュールソケットが見つからない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にファイルを含むパスを追加する必要がありますまたはあなたがファイルを必要とbeforグローバルテーブル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

それに掘り後、私は同じようにこの問題を解決しました。しかし、本当にありがとうございました。 –