[Windows Bash] Git in bash ignores SSH key

When you using Bash for Windows (MinGW, Installed by git), with TotoriseGit installed
Sometime ssh works but git do not pick-up correct SSH keys.
Causing “No supported authentication methods available”

It is because TotoriseGit has taken over some git/ssh command.

To correctly this, the solution is adding this line to your ~/.bashrc

export GIT_SSH=/bin/ssh.exe

 

 

[Windows Bash] Using bash in Windows

As a full-stack developer in LAMP, I often play-around with Linux servers.
Unfortunately, there are always some reason that I can’t switch to Linux development machine.
E.g. Windows only printer drivers, Adobe Software, exe…

However, Windows cmd/PowerShell always disgust me for their special syntax.
And I missed Unix-like CLI tools such as (grep, find, wget, curl, vim, ssh…) so much.
Plus you can’t use id_rsa format in Windows directly (You will need putty, a GUI tool for CLI… and you need to convert all your keys)

So today we will get those lovely tools back, on Windows!
(Does NOT require Windows 10 Ubuntu Bash, should work on any supported version of Windows)
Continue reading “[Windows Bash] Using bash in Windows”

[Windows/Linux] PHP “exec” missing environment variable causing command not to run

In a recent project, I am finding way to display current git branch on the backend dashboard.
Without a application dependent library, executing CLI git seems to be the fastest way.
i.e. The exactly same syntax as we use in bash/cmd/powershell.

$currentBranch = exec('git rev-parse --abbrev-ref HEAD');

However, it worked in production/staging Linux machine, but not in local Windows machine.
It does work if I specify the absolute path C:\Program Files\Git\bin\git.exe, but it’s not optimal because it will be machine dependent.

After a while, I figure out the environment PATH variable is missing in Windows that cause git not being picked up.
The trick is, add this line before exec call to:

putenv('PATH=' . $_SERVER['PATH']);