2012-03-14 14 views
6

Estoy intentando configurar el módulo mod_lua para Apache, pero he tenido dificultades para acceder a los módulos Lua de terceros. Decir que tengo un hello_world.lua en la carpeta htdocs de Apache que tiene algo como esto:¿Cómo configurar mod_lua en Apache para acceder a módulos de Lua de terceros?

require "apache2" 

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

Y yo vaya a "http: //localhost/hello_world.lua", que funcionará como se espera. Pero si intento agregar una línea como:

require "socket" 

O

require "cgilua" 

me sale el siguiente resultado:

Error!

intento de llamar a un valor nulo

Sin embargo, algunos módulos de hacer el trabajo, tales como:

require "base" 

que funciona como se esperaba.

Si navego a base.lua en el sistema de archivos (c: \ archivos de programa \ lua \ 5.1 \ lua \ base.lua) y elimino este archivo, intento ejecutar mi script obtengo el mismo error que el indicado anteriormente . Entonces este debe ser el directorio que mod_lua está buscando módulos. Los módulos dlls no están en esta carpeta, sino que están en c: \ archivos de programa \ lua \ 5.1 \ clibs \, que configuré para la variable de entorno LUA_CPATH.

Luasocket y cgilua están presentes en esta carpeta, pero causan un error cuando intento solicitarlos en mi script.

Por lo que puedo deducir, funciona bien con cualquier módulo lua puro, pero cualquier cosa que tenga cmodules (socket, etc.) causa problemas.

Otros detalles:

¿Qué hay que hacer para poder solicitar módulos en scripts ejecutados por mod_lua?

+0

así que, ¿alguna suerte con los consejos sugeridos a continuación .....? – kartben

Respuesta

3

Parece que necesita agregar las directivas LuaPackageCPath y/o LuaPackagePath a la configuración de su sitio (en el archivo de configuración global, o .htaccess, ...).

En su caso, yo supongo que

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

debe hacer el truco.

+0

No funciona para mí. He compilado lfs, luego obtuve un archivo 'lfs.so'. Si creo un archivo lua con 'require" lfs "' en la misma carpeta que 'lfs.so' y ejecuto lua interactivo, o' lua myscript.lua', funciona. Pero si intento a través de 'mod_apache' no funciona. El error en el archivo de registro es 'lua: no se puede encontrar el identificador de función en/web/carpeta/i.lua' –

+0

después de agregar LuaPackagePath C: \ Archivos de programa (x86) \ Lua \ 5.1 \ lib LuaPackageCPath C: \ Archivos de programa (x86) \ Lua \ 5.1 \ clibs – Jeevanantham

Cuestiones relacionadas