2012-03-14 28 views
6

Tôi đang cố gắng thiết lập mô-đun mod_lua cho Apache, nhưng gặp phải khó khăn trong việc truy cập các mô-đun Lua của bên thứ ba. Nói rằng tôi có một hello_world.lua trong thư mục htdocs của Apache có một cái gì đó như thế này:Làm thế nào để thiết lập mod_lua trong Apache để truy cập các mô-đun Lua của bên thứ ba?

require "apache2" 

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

Và tôi đi đến "http: //localhost/hello_world.lua", mà sẽ hoạt động như mong đợi. Nhưng nếu tôi cố gắng thêm một dòng như:

require "socket" 

Hoặc

require "cgilua" 

tôi nhận được kết quả như sau:

Lỗi!

nỗ lực để gọi một giá trị nil

Tuy nhiên, một số module làm việc, chẳng hạn như:

require "base" 

Đó chức năng như mong đợi.

Nếu tôi điều hướng đến base.lua trong hệ thống tệp (c: \ program files \ lua \ 5.1 \ lua \ base.lua) và xóa tệp này, sau đó cố gắng chạy tập lệnh của tôi, tôi nhận được lỗi giống như đã nêu ở trên . Vì vậy, đây phải là thư mục mod_lua đang kiểm tra các mô-đun. Modules dlls không nằm trong thư mục này, thay vào đó chúng nằm trong c: \ program files \ lua \ 5.1 \ clibs \, mà tôi đã thiết lập biến môi trường LUA_CPATH để trỏ tới.

Luasocket và cgilua đều có trong thư mục này, nhưng chúng gây ra lỗi khi tôi cố gắng yêu cầu chúng trong tập lệnh của tôi.

Từ những gì tôi có thể thu thập, nó hoạt động tốt với bất kỳ mô-đun lua thuần túy, nhưng bất cứ điều gì có cmodules cũng (socket, vv) gây ra vấn đề.

Thông tin thêm:

Cần phải làm gì để có thể yêu cầu các mô-đun trong tập lệnh được chạy bởi mod_lua?

+0

vì vậy, bất kỳ sự may mắn nào với lời khuyên được đề xuất bên dưới .....? – kartben

Trả lời

3

Có vẻ như bạn cần thêm LuaPackageCPath và/hoặc LuaPackagePath chỉ thị vào cấu hình trang web của bạn (trong tệp cấu hình chung hoặc .htaccess, ...).

Trong trường hợp của bạn, tôi muốn rằng

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

nên làm các trick.

+0

Nó không hiệu quả với tôi. Tôi đã biên dịch lfs, sau đó tôi có một tập tin 'lfs.so'. Nếu tôi tạo một tệp lua với 'require 'lfs" 'trong cùng thư mục với' lfs.so' và khởi chạy lua tương tác, hoặc 'lua myscript.lua' nó hoạt động. Nhưng nếu tôi thử qua 'mod_apache' thì nó không hoạt động. Lỗi trong tệp nhật ký là 'lua: Không thể tìm thấy hàm xử lý trong/web/folder/i.lua' –

+0

sau khi thêm LuaPackagePath C: \ Program Files (x86) \ Lua \ 5.1 \ lib LuaPackageCPath C: \ Tệp chương trình (x86) \ Lua \ 5.1 \ clibs – Jeevanantham

Các vấn đề liên quan