windows - Sådan opsættes mod\_lua i Apache for at få adgang til tredjeparts Lua-moduler?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at oprette mod\_lua-modul til Apache, men har haft problemer med at få adgang til tredjeparts Lua-moduler. Sig jeg har en hello\_world.lua i Apache s htdocs-mappe, der har noget som dette:


require "apache2"

function handle(r)
  r.content\_type = "text/html"
  r:write "Hello World from <strong>mod\_lua</strong>."
  return apache2.OK
end


Og jeg går til 'http://localhost/hello\_world.lua', som vil fungere som forventet. Men hvis jeg forsøger at tilføje en linje som:


require "socket"


Eller


require "cgilua"


Jeg får følgende output:



  Fejl!

  
  forsøge at kalde en null værdi



Nogle moduler arbejder dog som:


require "base"


Det fungerer som forventet.


Hvis jeg navigerer til base.lua i filsystemet (c: \ programfiler \ lua \ 5.1 \ lua \ base.lua) og fjern denne fil, så forsøg at køre mit script Jeg får den samme fejl som angivet ovenfor. Så det må være den mappe, mod\_lua søger efter moduler. Moduler dlls er ikke i denne mappe, men i stedet er de i c: \ programfiler \ lua \ 5.1 \ clibs \, som jeg opsætter miljøvariabel LUA\_CPATH for at pege på.


Luasocket og cgilua er begge til stede i denne mappe, men de forårsager en fejl, når jeg forsøger at kræve dem i mit script.


Fra hvad jeg kan samle, fungerer det fint med nogen ren lua-moduler, men alt hvad der også har cmoduler (stikkontakt osv.) Giver problemer.


Yderligere oplysninger:



  • OS: Windows 7 Home Premium

  • LUA\_PATH=c: \ programfiler \ lua \ 5.1 \ lua \

  • LUA\_CPATH=c: \ programfiler \ lua \ 5.1 \ clibs \

  • Apache version: 2.2.22

  • mod\_lua version: http://www.corsix.org/content/mod-lua-win32#comment-3214



Hvad skal der gøres for at kunne kræve moduler i scripts kørt af mod\_lua? [6]

Bedste reference


Det ser ud til, at du skal føje LuaPackageCPath og/eller LuaPackagePath-direktiver til din webkonfiguration (i den globale konfigurationsfil eller .htaccess, ...). [7] [8]


I dit tilfælde antager jeg det


LuaPackagePath c:program fileslua5.1lua
LuaPackageCPath c:program fileslua5.1clibs


bør gøre det trick.