如何在 Apache 中设置脚本解释器,而不是在文件开头设置?

我遇到了以下问题: 当我想在 Apache 中运行一个未编译的 Lua 脚本时,我只需在文件开头添加 #!/usr/share/lua,到目前为止一切都正常。

但是,如果我想使用 luac 编译它以使它运行得更快,我无法向文件中添加任何文本,因为它是编译后的二进制数据(仍需要由 Lua 解释器解释,并且不能单独执行)。

有没有办法告诉 Apache 总是使用 .lua(或 .luac 标记为已编译)扩展名来解释带有扩展名的文件 /usr/share/lua 呢?

点赞
用户1580216
用户1580216

我不知道是否有办法将此作为CGI脚本执行,因为CGI规范基本上要求shell能够根据开头的hashbang运行文件。

但是,你可以用Lua编写一个简单的CGI处理程序,对.luac文件进行loadfile(),然后执行它。您可以在.htaccesshttpd.conf文件中使用以下指令设置.luac文件由此脚本处理:

# 指定文件扩展名
AddHandler my-file-type .xyz
Action my-file-type /cgi-bin/program.cgi

在这个来自doc 的例子中,program.cgi 将传递URL请求的文件名,因此你可以解析它并运行该文件。

2016-02-10 18:36:34