在(Apache -> Django -> 子进程)堆栈中执行 `git pull` 时出现“权限被拒绝”

在(Apache -> Django -> 子进程)堆栈中执行 `git pull` 时出现“权限被拒绝”

我在 Apache 服务器上有一个 Django 应用程序,用于在该服务器上存储的 repo 上subprocess.Popen执行操作。git pull

它设法为服务器获取新的提交,但无法进行签出:

error: git checkout-index: unable to create file run_gui.py (Permission denied)

完全相同的应用程序在我的 Windows 系统上运行良好,能够成功从远程拉取 git 仓库。但在我的 Linux 服务器上,它失败并显示上述错误消息。当我ssh进入服务器时,我设法在 shell 中执行操作git pull,并且它无错误地完成。但 Django 应用程序不行。

我认为这可能是权限问题;但是我使用相同的subprocess.Popen程序运行,检查了 Django 在哪个用户下运行id。我得到了我自己的用户:

uid=608(coolrr) gid=608(coolrr) groups=608(coolrr)

这是拥有该 repo 的用户。

我还确认我可以从 Django 应用程序在文件系统上创建一个简单的文件。

有人知道发生什么事吗?

答案1

我发现了错误;我没有使用正确的“工作目录”。这次我给出了Popen一个cwd参数,将其设置为我的存储库的路径,并且它没有问题。

相关内容