2016-04-08 7 views
0

ISOファイルを生成するためにngnixでLuaスクリプトを使用しています。 Luaスクリプトは要求を解析しており、genisoimageコマンドに渡す必要があります。Luaはbashスクリプトを実行しません

local pack_cmd = "genisoimage -V" .. some_other_name 
os.execute(pack_cmd) 

コマンドが正常に実行されず、リターンコードとして、私は3328を得る:

私が試してみました。私は アブールテ経路(/usr/bin/genisoimage/bin/genisoimage)で試しましたが、 は機能しません。

私は簡単な回避策を試してみた - このようにそれを実行するbashスクリプト 内genisoimageのコマンドを実行し、Luaのスクリプトで:

local pack_cmd = "bash /absoulte/path/script.sh " .. some_other_name 
os.execute(pack_cmd) 

をまだ作業と同じ終了コードを取得していません。また何が間違っているかをキャッチしようとしましたが、好きなように見えますgenisoimageコマンドは決して実行されません。私は手動ですべてがOKに動作pack_cmd文字列を実行した場合、ハンドルと

local pack_cmd = "bash /absoulte/path/script.sh " .. some_other_name .." >> error.log" 
os.execute(pack_cmd) 

バージョンは、同様に

local handle = io.popen(pack_cmd) 
local result = handle:read("*a") 
handle:close() 

機能していません。 bashスクリプトの実行も機能しています。

+0

'strace'があなたに起こっていることを教えてください。 –

+0

... btw、文字列連結によるコード生成は非常に悪い習慣です(注入脆弱性につながる可能性があります)。代わりに明示的なargv配列を使用することを検討してください。 –

+0

@CharlesDuffyこのような高速応答に感謝します!私はこれを 'www-data'ユーザとして実行する権限がないことを知りました。提案もありがとう。 – sstevan

答えて

0

問題は、www-dataユーザーのアクセス許可が原因でした。

+1

解決策はサイトに固有のものであるため(質問と回答のペアが同じ問題を持つ他の人に役立つようなことがないように)、質問を削除することを検討してください。他人に役立つこと。 –

関連する問題