2012-03-14 42 views
6

我試圖爲Apache設置mod_lua模塊,但在訪問第三方Lua模塊時遇到了困難。說我有Apache的htdocs文件夾一個hello_world.lua有這樣的事情:如何在Apache中設置mod_lua來訪問第三方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" 

我得到以下輸出:

錯誤!

試圖調用一個零值

然而,一些模塊做的工作,比如:

require "base" 

,其功能如同預期。

如果我導航到文件系統中的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模塊,但任何具有cmodules以及(套接字等)導致問題。

附加信息:

需要做些什麼才能在mod_lua運行的腳本中需要模塊?

+0

那麼,任何運氣與建議下面的建議.....? – kartben 2012-03-22 09:08:49

回答

3

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

在你的情況,我認爲

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

應該做的伎倆。

+0

它不適合我。我編譯了lfs,然後我有一個'lfs.so'文件。如果我在'lfs.so'的同一文件夾中創建一個lua文件,並且啓動交互式lua或'lua myscript.lua',它就可以工作。但是,如果我嘗試通過'mod_apache'它不起作用。日誌文件中的錯誤是'lua:無法在/ web/folder/i.lua中找到函數句柄' – 2014-05-11 13:18:06

+0

添加後 LuaPackagePath C:\ Program Files(x86)\ Lua \ 5.1 \ lib LuaPackageCPath C:\ Program Files(x86)\ Lua \ 5.1 \ clibs – Jeevanantham 2016-02-01 06:46:29

相關問題