我试图设置Lighttpd + lua + fastcgi在embedded式MIPS板上运行Web界面。 但是这里的重要部分,我猜是Lua。 当试图运行/usr/local/bin/wsapi.fcgi(这是lua脚本),我得到这个错误:
/usr/bin/lua: error loading module 'lfcgi' from file '/usr/local/lib/lua/5.1/lfcgi.so': File not found stack traceback: [C]: ? [C]: in function 'require' /usr/local/share/lua/5.1/wsapi/fastcgi.lua:9: in main chunk [C]: in function 'require' /usr/local/bin/wsapi.fcgi:9: in main chunk [C]: ?
这真的很奇怪,因为ls显示文件在那里,所有权限都可以:
# ls -l /usr/local/lib/lua/5.1/lfcgi.so -rwxr-xr-x 1 0 0 21152 /usr/local/lib/lua/5.1/lfcgi.so
而更令人沮丧的是,如果我真的删除了文件,lua显示了一个不同的错误,这意味着第一个错误并不是由lua无法正确定位文件造成的。 所以我在这里有点迷路,看起来像错误信息是误导和问题不是真的没有find的文件,但是什么…
PS错误来自文件wsapi / fastcgi.lua,从第9行看起来像这样:
local lfcgi = require"lfcgi"
– 可能需要语法有什么问题吗? 我不是卢阿的专家,所以我不能说。
好的,我明白了。 事实证明,这是一个缺失的依赖,正如@Ctx所建议的。
readelf -d lfcgi.so | grep NEEDED
显示它需要libfcgi.so.0这是一个符号链接到libfcgi.so,我只有最后一个,而不是符号链接。 创建符号链接后,它正在工作(实际上它带来了另一个错误,但它是一个不同的故事:P)。
顺便说一句 – 这个错误信息真的让人困惑 – 它看起来像lfcgi.so文件丢失,实际上它是它的一个依赖关系导致了问题。