拉風(fēng)的咖菲貓
2019-08-30 15:02:17
我有一個我最近編寫的Python腳本,我使用命令行調(diào)用了一些選項。我現(xiàn)在想要一個非常瘦的Web界面來在我的Mac上本地調(diào)用此腳本。我不想經(jīng)歷在我的Mac上安裝mod_python或mod_wsgi的小麻煩,所以我只是從PHP做一個system()或popen()來調(diào)用Python腳本。有更好的想法嗎?提前致謝!
3 回答

忽然笑
TA貢獻1806條經(jīng)驗 獲得超5個贊
根據(jù)您的工作,system()或popen()可能是完美的。如果Python腳本沒有輸出,或者您希望Python腳本的輸出直接進入瀏覽器,請使用system()。如果要將數(shù)據(jù)寫入Python腳本的標準輸入,或者從Python腳本的標準輸出中讀取數(shù)據(jù),請使用popen()。popen()只會讓你讀或?qū)懀荒芡瑫r讀和寫。如果你想要兩者,請查看proc_open(),但是在程序之間進行雙向通信時,需要注意避免死鎖,每個程序都在等待另一個程序執(zhí)行某些操作。
如果要將用戶提供的數(shù)據(jù)傳遞給Python腳本,那么最重要的是注入命令。如果您不小心,您的用戶可能會向您發(fā)送“; evilcommand;”等數(shù)據(jù) 并使你的程序違背你的意愿執(zhí)行任意命令。
escapeshellarg()和escapeshellcmd()可以幫助解決這個問題,但我個人希望刪除所有不是已知好角色的東西,使用像
preg_replace('/[^a-zA-Z0-9]/', '', $str)
添加回答
舉報
0/150
提交
取消