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:
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.