【发布时间】:2015-03-13 06:13:57
【问题描述】:
我编写了一个简单的 Lua 脚本,用于读取和写入 XML 数据库。我想将它用作 CGI,最终返回数据以显示在网页中,但是当出于测试目的,我直接进入浏览器中的脚本时,它会在 require("socket.http") 上以 500内部服务器错误,在浏览器中运行时显然找不到 Lua 套接字库。
我已经多年没有使用 CGI,而且我是 Lua 的新手,所以感谢您的帮助。
【问题讨论】:
我编写了一个简单的 Lua 脚本,用于读取和写入 XML 数据库。我想将它用作 CGI,最终返回数据以显示在网页中,但是当出于测试目的,我直接进入浏览器中的脚本时,它会在 require("socket.http") 上以 500内部服务器错误,在浏览器中运行时显然找不到 Lua 套接字库。
我已经多年没有使用 CGI,而且我是 Lua 的新手,所以感谢您的帮助。
【问题讨论】:
在浏览器中运行时显然找不到 Lua 套接字库。
我假设您的脚本正在使用socket.http。如果是这样,您需要使 luasocket(它的二进制库和 Lua 文件)可用于您的脚本。我的建议是在本地运行它时让它工作,然后再尝试让它作为 CGI 脚本运行。您需要为您的平台获取预编译的 luasocket,或者自己编译和安装。然后,您需要在脚本中使用 LUA_PATH 和 LUA_CPATH 来引用 Lua (PATH) 和二进制 (CPATH) 文件的位置。
【讨论】:
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 文件。