2016-12-30 27 views
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部分:

+1

apache主要是作爲用戶'wwwdata',它具有不同privilages並使用不同的環境 - 它可以有不同的變量。它保護系統免受黑客攻擊。 – furas

+0

這是有道理的。所以也許我應該將這些腳本/文件夾移動到/ var/www/FlaskApp中的某個位置? –

+0

可能它可能是最好的解決方案。有些人將'root'(或'sudo')privilages添加到'wwwdata',但它可能是最糟糕的解決方案:) – furas

回答

1

furas provideded偉大的信息。我改變了腳本,以便python在flask應用程序內創建目錄,並且一切順利。

相關問題