【问题标题】:Lua CGI fails on call to socketLua CGI 在调用套接字时失败
【发布时间】:2015-03-13 06:13:57
【问题描述】:

我编写了一个简单的 Lua 脚本,用于读取和写入 XML 数据库。我想将它用作 CGI,最终返回数据以显示在网页中,但是当出于测试目的,我直接进入浏览器中的脚本时,它会在 require("socket.http") 上以 500内部服务器错误,在浏览器中运行时显然找不到 Lua 套接字库。

我已经多年没有使用 CGI,而且我是 Lua 的新手,所以感谢您的帮助。

【问题讨论】:

    标签: sockets browser lua cgi


    【解决方案1】:

    在浏览器中运行时显然找不到 Lua 套接字库。

    我假设您的脚本正在使用socket.http。如果是这样,您需要使 luasocket(它的二进制库和 Lua 文件)可用于您的脚本。我的建议是在本地运行它时让它工作,然后再尝试让它作为 CGI 脚本运行。您需要为您的平台获取预编译的 luasocket,或者自己编译和安装。然后,您需要在脚本中使用 LUA_PATH 和 LUA_CPATH 来引用 Lua (PATH) 和二进制 (CPATH) 文件的位置。

    【讨论】:

    • 保罗,很高兴收到您的回复!我正在使用 ZeroBrane Studio。出于测试目的,我将脚本精简为 local http = require("socket.http") io.write("Content-Type: text/plain\n\n", os.date(), "\n"),这样我就可以调用 socket 并查看脚本是否执行。在 IDE 中运行时它工作正常,但在浏览器中运行时它失败。完整的错误文本在pastebin.com/U7CiJ75X
    • ;)。查看错误消息,您已安装 socket.http (C:\Program Files (x86)\Lua\5.1\lua\socket\http.lua),但未安装 socket.headers (module 'socket.headers' not found)。您似乎为早期版本的 luasocket 安装了 Lua 文件。您需要确保为您使用的 luasocket 版本安装所有必需的 .lua 文件。
    • 就是这样。我什至不记得安装了 luasocket,但我做了很多实验,我并不感到惊讶。我将 luasocket http.lua 放在正在搜索的路径中,它当然可以工作。谢谢!
    猜你喜欢
    • 2011-08-13
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 2021-09-21
    • 2019-03-18
    • 2012-06-07
    相关资源
    最近更新 更多