0
我有一個在Ubuntu上運行的Flask應用程序,它調用一個單獨的Python腳本。在我的瓶應用,這是調用腳本:Python腳本可以獨立運行,但當被應用程序調用時會拋出權限錯誤
args = ['python3', '/home/make_videos/code/master_script_slim.py', 'videos', '0,1', '01', '01']
output = subprocess.call(args)
當我運行它,我得到這個錯誤在apache.log:
Traceback (most recent call last):
File "/home/make_videos/code/master_script_slim.py", line 90, in <module>
make_dirs()
File "/home/make_videos/code/master_script_slim.py", line 81, in make_dirs
os.makedirs(sequence_creation_temp)
File "/usr/lib/python3.5/os.py", line 231, in makedirs
makedirs(head, mode, exist_ok)
File "/usr/lib/python3.5/os.py", line 231, in makedirs
makedirs(head, mode, exist_ok)
File "/usr/lib/python3.5/os.py", line 241, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/home/make_videos/ASV_Tests/01'
但是,當我運行此腳本(master_script_slim.py
)手動進出我的venv,我沒有得到這個錯誤。
顯然這是創建一系列導演時的權限問題,但我無法準確找出如何解決這個問題。我嘗試使用sys.executable
來解決權限問題,但Flask應用程序是python2,我需要爲此腳本專門調用python3。
這裏是炸出來的代碼makedirs部分:
apache主要是作爲用戶'wwwdata',它具有不同privilages並使用不同的環境 - 它可以有不同的變量。它保護系統免受黑客攻擊。 – furas
這是有道理的。所以也許我應該將這些腳本/文件夾移動到/ var/www/FlaskApp中的某個位置? –
可能它可能是最好的解決方案。有些人將'root'(或'sudo')privilages添加到'wwwdata',但它可能是最糟糕的解決方案:) – furas