我有一个带有Web界面的PHP脚本,用于为现在自动化的流程提供输入。我试图通过PHP的exec执行git命令,在这个过程中包含提交和推送给Git。我能够拉入远程存储库,添加文件并获取它的状态。但是,我在尝试提交更改时遇到了问题。
当我尝试提交时,我得到:
[0] =>
[1] => *** Please tell me who you are.
[2] =>
[3] => Run
[4] =>
[5] => git config --global user.email "you@example.com"
[6] => git config --global user.name "Your Name"
[7] =>
[8] => to set your account's default identity.
[9] => Omit --global to set the identity only in this repository.
[10] =>
[11] => fatal: unable to auto-detect email address (got 'tim@tim.(none)')
据我所知,Git没有在〜/ .gitconfig中解析我的全局配置,它可以在通过终端正常执行时执行。我在我的用户和组下运行Apache。当我尝试运行上面建议的命令时,我得到:
[0] => fatal: $HOME not set
我该如何解决这个问题?
答案 0 :(得分:3)
您需要检查Apache中的可用环境变量。您可以使用
执行此操作http://php.net/manual/en/function.get-defined-vars.php
Apache以root身份启动并切换到非特权用户但是没有为该用户设置env变量请参见此处..
https://serverfault.com/questions/179833/apache2-user-home-directory-lock-to-root
注意,linux系统上的主目录在/ etc / passwd中设置。这是一个例子
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
但是在Apache中,这只是将文档设置为root,因为它没有像正常登录那样设置env变量,即读取配置文件等。您可以使用
在Apache中设置env变量SetEnv HOME / home / foo