我希望有人可以提供帮助,我有一个PHP页面,它使用shell_exec
压缩目录并运行git pull
以降低最近的存储库更改。
$op = shell_exec("cd /home/user/git/$repo/$dir/; zip -r /home/user/archives/$dir.$datestamp.zip $dir; cd /home/user/git/$repo/$dir/; git pull");
拉链工作正常。如果我在我的shell_exec中将git pull
更改为例如git log
或git status
,这也可以,我可以看到日志文件。
似乎并不喜欢git pull。
我看到了另一个类似的帖子,但不确定它是如何实现的>> Shell_exec with git pull?
答案 0 :(得分:4)
根据您在评论中的说明,问题似乎是您的apache
用户无法写入存储库,这在使用git pull
时显然是必需的。你有两个行动方案:
apache
用户可以写入你应该仔细考虑任何一种选择的安全含义,但第二种选择可能是最简单的。如果您还没有这样的组,可以使用以下命令创建它:
addgroup gitwriters
...然后将自己和Apache用户添加到该组:
adduser [yourusername] gitwriters
adduser apache gitwriters
然后,您可以按照another question中的说明更改存储库的权限。重申一些略有不同的内容:
# Recursively, set the group ownership of every file and directory of your repository:
chgrp -R gitwriters /path/to/your/repo
# Recursively, make every file and directory of your repository readable and writable
# by the group:
chmod -R g+rw /path/to/your/repo
# Recursively, set the setgid of every directory in the repository. The setgid bit
# on directories means that files created in the directory will have the same group
# ownership as the directory.
find /path/to/your/repo -type d -print0 | xargs -0 chmod g+s
然后希望您的git pull
能够正常运作。