2012-03-14 11 views
6

Sto tentando di configurare il modulo mod_lua per Apache, ma ho riscontrato difficoltà nell'accedere a moduli Lua di terze parti. Dire che ho un hello_world.lua nella cartella htdocs di Apache che ha qualcosa di simile:Come configurare mod_lua in Apache per accedere ai moduli Lua di terze parti?

require "apache2" 

function handle(r) 
    r.content_type = "text/html" 
    r:write "Hello World from <strong>mod_lua</strong>." 
    return apache2.OK 
end 

e vado a "http: //localhost/hello_world.lua", che funzionerà come previsto. Ma se provo ad aggiungere una linea come ad esempio:

require "socket" 

O

require "cgilua" 

ottengo il seguente output:

Errore!

tentativo di chiamare un valore nullo

Tuttavia, alcuni moduli do lavoro, come ad esempio:

require "base" 

che funziona come previsto.

Se navigo in base.lua nel filesystem (c: \ program files \ lua \ 5.1 \ lua \ base.lua) e rimuovo questo file, quindi provo a eseguire il mio script ottengo lo stesso errore di cui sopra . Quindi questa deve essere la directory che mod_lua sta controllando per i moduli. Le DLL di moduli non si trovano in questa cartella, ma sono in c: \ program files \ lua \ 5.1 \ clibs \, che ho impostato per la variabile di ambiente LUA_CPATH.

Luasocket e cgilua sono entrambi presenti in questa cartella, ma causano un errore quando provo a richiedere loro nel mio script.

Da quello che ho potuto capire, funziona bene con tutti i moduli lua puri, ma tutto ciò che ha cmodules pure (socket, ecc) causa problemi.

Ulteriori informazioni:

Cosa è necessario fare per poter richiedere moduli in script eseguiti da mod_lua?

+0

quindi, qualsiasi fortuna con il suggerimento suggerito qui sotto .....? – kartben

risposta

3

Sembra che è necessario aggiungere LuaPackageCPath e/o LuaPackagePath direttive per la configurazione del sito (nel file di configurazione globale o .htaccess, ...).

Nel tuo caso, mi piacerebbe pensare che

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

dovrebbe fare il trucco.

+0

Non funziona per me. Ho compilato lfs, poi ho ottenuto un file 'lfs.so'. Se creo un file lua con 'require" lfs "' nella stessa cartella di 'lfs.so' e lancio lua interattivo, o' lua myscript.lua' funziona. Ma se provo con 'mod_apache' non funziona. L'errore nel file di registro è 'lua: impossibile trovare la funzione handle in/web/folder/i.lua' –

+0

dopo l'aggiunta LuaPackagePath C: \ Programmi (x86) \ Lua \ 5.1 \ lib LuaPackageCPath C: \ Programmi (x86) \ Lua \ 5.1 \ clibs – Jeevanantham

Problemi correlati