我在 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
参数,将其设置为我的存储库的路径,并且它没有问题。