gpt4 book ai didi

sockets - 如何在 nginx 中从 lua 访问套接字?

转载 作者:行者123 更新时间:2023-12-03 11:57:06 26 4
gpt4 key购买 nike

我已经从支持 lua 的源代码构建了 nginx,并且能够运行这样的服务器端脚本:

http {
lua_package_path '/usr/local/share/lua/5.1/?.lua;;';
server {
listen 80;
location /hi {
content_by_lua '
ngx.header["Content-Type"] = "text/plain;charset=utf-8"
ngx.say("Hello world!")
--local s = require("socket")
ngx.say(_VERSION);
';
}
}
}

所以当我访问 http://localhost/hi ,我得到这个输出:
Hello world!
Lua 5.1

如果我取消注释行 本地 s = 要求(“套接字”)然后我在浏览器中收到以下错误:
Unable to load page
Problem occurred while loading the URL http://localhost/hi
Connection terminated unexpectedly

socket.lua 出现在此文件夹中:
root@debian:/usr/local/share/lua/5.1# ls
ltn12.lua mime.lua socket socket.lua

更新:添加 cpath 没有帮助:
lua_package_cpath '/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/socket/?.so;;';

# ls /usr/local/lib/lua/5.1/socket/*.so
/usr/local/lib/lua/5.1/socket/core.so /usr/local/lib/lua/5.1/socket/serial.so /usr/local/lib/lua/5.1/socket/unix.so

# ls /usr/local/share/lua/5.1/
ltn12.lua mime.lua socket socket.lua

如何修复/诊断此问题?
谢谢

最佳答案

如果 socket.lua 是 diegonehab/luasocket ,
那么它需要socket/core.so

您需要指定 lua_package_cpath

cpath 用于编译的共享库模块(.so),路径用于文本模块(.lua)

/usr/local/lib/lua/5.1/?.so - cpath 的最常见值

关于sockets - 如何在 nginx 中从 lua 访问套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34320080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com