私はこれを読みました:
- 提案された実用的なソリューションはありません
- WindowsではなくLinuxを実行しています
- 自作のまとめです
- ランニング
httpd-2.4.9
これが私がこれまでに試したことですが、成功しませんでした:
- この提案に従ってください「サードパーティのluaモジュールをどこに配置しますか?」
私のvhost confにLuaのPATHのすべての可能性を追加しようとしました:
LuaPackageCPath /web/htdocs/olivier/doonoo/2/ LuaPackagePath /web/htdocs/olivier/doonoo/2/ LuaPackageCPath /web/htdocs/olivier/doonoo/2 LuaPackagePath /web/htdocs/olivier/doonoo/2 LuaPackageCPath /web/htdocs/olivier/doonoo/2/?.so LuaPackagePath /web/htdocs/olivier/doonoo/2/?.so LuaPackageCPath /web/htdocs/olivier/doonoo/2/? LuaPackagePath /web/htdocs/olivier/doonoo/2/? LuaPackageCPath /web/htdocs/olivier/doonoo/2/ LuaPackagePath /web/htdocs/olivier/doonoo/2/ LuaPackageCPath ./?.so LuaPackagePath ./?.so LuaPackageCPath ./ LuaPackagePath ./ LuaPackageCPath ./? LuaPackagePath ./?
lfs.so
httpフォルダーに入れようとしました:/local/install/httpd-2.4.9/modules/lua
lfs.so
私のlua共有に入れようとしました/usr/local/share/lua/5.2
lfs.so
より一般的な共有を入れようとしました/usr/local/share
lfs.so
共有httpモジュールを入れようとしました/opt/httpd-2.4.9/modules/
そして今、私はまだ有効な解決策を見つけていません。何か案が?ところで、情報を書き込むために使用できるので、lua が使用しているand/orr:notice()
をダンプする方法はありますか?path
cpath
私のファイルでは、ファイルにディレクティブがrequire "bb"
あり、 と同じパスにある場合、機能します。Web サーバーを実行して再起動しようとすると、ディレクティブが で機能しなくなります。これは、環境変数が Apache に何らかの影響を与えることを意味します。aa.lua
bb.lua
aa.lua
export LUA_PATH=
require "bb"
aa.lua
LUA_PATH
LUA_CPATH
mod_lua
今、私は別のことを試しました:動的ライブラリです。私はこれをします:
# lua
Lua 5.2.1 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> a,b = package.loadlib('/usr/local/lib/posix_c.so', 'fcntl')
> print (a,b)
function: 0x7fbda3f845b0 nil
>
これは、正常に open +fcntl
からの関数を取得しようとしたことを意味しposix_c.so
ます。
このコードを lua ファイルに追加しようとすると、次のmod_lua
ようになります。
function handle(r)
r.headers_out['Cache-Control'] = 'no-cache, must-revalidate'
r.headers_out['Expires'] = 'Mon, 26 Jul 1997 05:00:00 GMT'
r.content_type = 'application/json';
local a,b = package.loadlib('/usr/local/lib/posix_c.so', 'fcntl');
r:puts(tostring(a)..','..tostring(b))
return apache2.OK
end
私はこの出力を得ました:
nil,/usr/local/lib/posix_c.so: undefined symbol: luaL_setfuncs
これを読んだ後、何が問題なのかを推測しました。5.2.1 バージョンをインストールmod_lua
し、5.1 でコンパイルしました。luaposix
そこで、5.2.1 と 5.2 のすべてのリンクを削除し、 libを再コンパイルしました。これはfunction: 0x220bce0,nil
、ライブラリが正常に開かれたことを意味します。
何が起こっているのか分かりますか?