我正在尝试从PHP文件git pull
,但似乎没有使用配置。
git config --global user.name
和git config --global user.email
已设置,git pull可从命令行运行。
现在,当我尝试执行此脚本时:
<?php
header('Content-type: text/plain');
system('git pull 2>&1');
echo "\nCompleted!";
我得到以下输出:
* 请告诉我你是谁。
运行
git config --global user.email“you@example.com”git config --global user.name“你的名字”
设置帐户的默认身份。省略 - 全球设置 仅在此存储库中的身份。
致命:不允许空身份
完成!
可能是因为git config
是用户特定的而且PHP是从其他用户运行的吗?
答案 0 :(得分:2)
只需在git上使用-c
标志:
-c <name>=<value>
Pass a configuration parameter to the command. The value given will override values from configuration files. The <name> is expected in the same format
as listed by git config (subkeys separated by dots).
类似于:
git -c user.name=apache pull
应该让你到那儿。添加您需要的任何参数。如果要指定特定文件,则将相关配置选项添加到执行脚本的用户,或者通过exporting a different HOME
env variable first.
答案 1 :(得分:0)
您希望您的网络服务器即使在您未登录时也能正常工作,不是吗?这意味着它由另一个用户运行(除非您另有指定)。除非您通过CLI运行脚本,否则脚本由apache,www-data或您配置的任何用户运行。
答案 2 :(得分:0)
我设法让它工作,但它不是一个理想的解决方案。我需要找到一种方法来为apache用户设置git config
一次,而不是每次都。我在共享主机上,所以我不知道它是否真的可能。
<?php
header('Content-type: text/plain');
system('git config user.name "Server"');
system('git config user.email "deploy@server.com"');
system('git pull 2>&1');
echo "\nCompleted!";
答案 3 :(得分:0)
这有点像kludge,但你也可以设置系统git config:
git config --system user.name <user>
git config --system user.email <user>@<domain>
这对于服务器的所有用户来说都是一个非常不幸的副作用,所以它确实不是很好。