Как настроить mod_lua в Apache для доступа к сторонним модулям Lua? - PullRequest
6 голосов
/ 14 марта 2012

Я пытаюсь настроить модуль mod_lua для Apache, но столкнулся с трудностями при доступе к сторонним модулям Lua.Скажем, у меня есть hello_world.lua в папке Apache htdocs, который имеет что-то вроде этого:

require "apache2"

function handle(r)
  r.content_type = "text/html"
  r:write "Hello World from <strong>mod_lua</strong>."
  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 проверяет на наличие модулей.находятся не в этой папке, вместо этого они находятся в каталоге c: \ program files \ lua \ 5.1 \ clibs \, на который я указал переменную среды LUA_CPATH.

Luasocket и cgilua присутствуют в этой папкеТем не менее они вызывают ошибку, когда я пытаюсь потребовать их в моем сценарии.

Из того, что я могу гКроме того, он отлично работает с любыми чистыми модулями lua, но все, что имеет c-модули (сокет и т. д.), вызывает проблемы.

Дополнительная информация:

Что необходимо сделать, чтобы иметь возможность требовать модули в скриптах, запускаемых mod_lua?

1 Ответ

3 голосов
/ 16 марта 2012

Похоже, вам нужно добавить LuaPackageCPath и / или LuaPackagePath директивы к конфигурации вашего сайта (в файле глобальной конфигурации, или .htaccess, ...).

В вашем случае я бы предположил, что

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

должен сделать трюк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...