Apache-2.2
在(Apache -> Django -> 子程序)堆棧中執行“git pull”時“權限被拒絕”
我在 Apache 伺服器上有一個 Django 應用程序,用於
subprocess.Popen
對該git pull
伺服器上儲存的儲存庫進行操作。它設法為伺服器獲取新的送出,但它不能進行結帳:
error: git checkout-index: unable to create file run_gui.py (Permission denied)
完全相同的應用程序在我的 Windows 系統上執行,能夠成功地從遠端提取 git repo。但在我的 Linux 伺服器上,它失敗並顯示上述錯誤消息。當我
ssh
進入伺服器時,我設法git pull
在 shell 中執行了一個操作,並且它沒有錯誤地完成。但不是來自 Django 應用程序。我認為這可能是權限問題;
subprocess.Popen
但是我通過使用相同的過程來檢查 Django 在哪個使用者下執行id
。我有自己的使用者:uid=608(coolrr) gid=608(coolrr) groups=608(coolrr)
這是擁有 repo 的使用者。
我還確認我可以從 Django 應用程序在文件系統上創建一個簡單文件。
有誰知道發生了什麼?
我發現了我的錯誤;我沒有使用正確的“工作目錄”。這次我給出
Popen
了一個cwd
論點,我將它設置為我的倉庫的路徑,並且它沒有問題地工作。