Как настроить mod_lua в Apache для доступа к сторонним модулям Lua?

Я пытаюсь установить модуль 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?

6
задан gastrop0d 14 March 2012 в 06:07
поделиться