PHP カレントディレクトリという名の罠

PHPにカレントディレクトリを調べる方法がいくつがありますが、WindowsUnixではどうやら挙動が違うようです。
test.php

echo "realpath: ".realpath(".")."\n";
echo "getcwd: ".getcwd ()."\n";
echo "env@pwd: ".$_ENV['PWD']."\n";

Windowsの場合

現在いるディレクト C:\work
実行するコマンド C:\php\php.exe
実行するファイル C:\php\test.php

結果

realpath: C:\work
getcwd: C:\work
env@pwd:

UNIXの場合

現在いるディレクト /home/hogehoge/work
実行するコマンド /usr/local/bin/php
実行するファイル /user/local/bin/test.php

結果

realpath: /usr/local/bin
getcwd: /usr/local/bin
env@pwd:/home/hogehoge/work

となるわけですな。(苦
Windowsの場合は、現在いるディレクトリを返し、
Unixの場合は、実行したファイルがあるディレクトリーを返すようです。


なので、挙動を同じにするためには

function getPwd() {
  return (OS_WINDOWS) ? getcwd() : $_ENV['PWD'];
}

とすればいける。
ちなみに、Webサーバ上で実行している分にはこの問題にはぶつかりません。
Webサーバ上は

dirname(__FILE__)

を使えばいいですからね。