2016-04-08 170 views
0

我正在使用Lua腳本和ngnix來生成ISO文件。 Lua腳本解析請求,它應該將它傳遞給genisoimage命令。Lua不會執行bash腳本

我已經試過:

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

命令沒有成功執行和返回代碼,我得到3328。我 嘗試與absoulte路徑(/usr/bin/genisoimage/bin/genisoimage),但 它不起作用。

我已經試過簡單的解決方法 - 執行genisoimage命令bash腳本 內,在Lua腳本像這樣運行:

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

仍然沒有工作並獲得相同的退出代碼。也試圖抓住什麼是錯的,但它看起來像命令genisoimage永遠不會執行。

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

帶把手的版本如果我執行pack_cmd串手動一切工作正常不工作,以及

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

。執行bash腳本也正在工作。

+0

'strace'告訴你發生了什麼? –

+0

...順便說一句,通過字符串連接代碼生成是非常糟糕的做法(可能導致注入漏洞)。請考慮使用顯式的argv數組。 –

+0

@CharlesDuffy感謝您的快速響應!我發現我沒有權限將其作爲'www-data'用戶執行。感謝您的建議。 – sstevan

回答

0

問題出在www-data用戶的權限。

+1

由於解決方案針對您的網站(例如,問答對不太可能幫助其他人解決同一問題),因此您可以考慮刪除問題,除非可以將答案擴展到足夠詳細的診斷步驟對別人有幫助。 –