Comment configurer mod_lua dans Apache pour accéder à des modules Lua tiers?

Je tente de configurer le module mod_lua pour Apache, mais j’ai rencontré des difficultés pour accéder aux modules Lua tiers. Disons que j’ai un hello_world.lua dans le dossier htdocs d’Apache qui a quelque chose comme ça:

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

Et je vais à “http: //localhost/hello_world.lua”, qui fonctionnera comme prévu. Mais si j’essaie d’append une ligne telle que:

 require "socket" 

Ou

 require "cgilua" 

J’obtiens la sortie suivante:

Erreur!

tenter d’appeler une valeur nulle

Cependant, certains modules fonctionnent, tels que:

 require "base" 

Cela fonctionne comme prévu.

Si je navigue vers base.lua dans le système de fichiers (c: \ program files \ lua \ 5.1 \ lua \ base.lua) et supprime ce fichier, alors essayez d’exécuter mon script, j’obtiens la même erreur que ci-dessus. Donc, ce doit être le répertoire que mod_lua vérifie pour les modules. Les modules dll ne sont pas dans ce dossier, ils sont plutôt dans c: \ program files \ lua \ 5.1 \ clibs \, que je configure la variable d’environnement LUA_CPATH pour pointer.

Luasocket et cgilua sont tous deux présents dans ce dossier, mais ils provoquent une erreur lorsque j’essaie de les exiger dans mon script.

D’après ce que je peux comprendre, cela fonctionne bien avec tous les modules lua purs, mais tout ce qui a aussi des modules (socket, etc.) pose problème.

Information additionnelle:

  • OS: Windows 7 Home Premium
  • LUA_PATH = c: \ program files \ lua \ 5.1 \ lua \
  • LUA_CPATH = c: \ program files \ lua \ 5.1 \ clibs \
  • Version Apache: 2.2.22
  • Version mod_lua: http://www.corsix.org/content/mod-lua-win32#comment-3214

Que faut-il faire pour pouvoir exiger des modules dans des scripts exécutés par mod_lua?

Il semble que vous ayez besoin d’append des directives LuaPackageCPath et / ou LuaPackagePath à la configuration de votre site (dans le fichier de configuration global ou .htaccess, …).

Dans votre cas, je suppose que

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

devrait faire le tour.