Я пытаюсь установить модуль mod_lua для Apache, но столкнулся с трудностями при доступе к сторонним модулям Lua. Скажем, у меня есть файл hello_world.lua в папке htdocs Apache, в котором есть что-то вроде этого:
require "apache2"
function handle(r)
r.content_type = "text/html"
r:write "Hello World from mod_lua."
return apache2.OK
end
И я захожу на "http://localhost/hello_world.lua", и он будет работать, как и ожидалось. Но если я попытаюсь добавить строку, например:
require "socket"
Или
require "cgilua"
, я получу следующий вывод:
Ошибка!
попытка вызвать нулевое значение
Однако некоторые модули работают, например:
require "base"
Это работает так, как ожидалось.
Если я перехожу к base.lua в файловой системе (c:\program files\lua\5.1\lua\base.lua) и удаляю этот файл, то при попытке запустить мой скрипт я получаю ту же ошибку, что и выше. Так что это должен быть каталог, который mod_lua проверяет на наличие модулей. DLL-файлы модулей находятся не в этой папке, а в c:\program files\lua\5.1\clibs\, на которую я настроил переменную среды LUA_CPATH.
Luasocket и cgilua присутствуют в этой папке, но они вызывают ошибку, когда я пытаюсь использовать их в своем сценарии.
Насколько я могу судить, он отлично работает с любыми чистыми lua-модулями, но все, что имеет cmmodules (сокеты и т. д.), вызывает проблемы.
Дополнительная информация:
Что должно быть сделано, чтобы иметь возможность запрашивать модули в сценариях, запускаемых mod_lua?