posix_uname()の返却値から実行環境を判断してアプリケーションの挙動が変わるように実装していました。 最近作ったphp環境で、posixモジュールが無効になっていて、この箇所が動きません。
php -r 'print_r(posix_uname());' PHP Fatal error: Call to undefined function posix_uname() in Command line code on line 1
php -r 'print_r(get_loaded_extensions());' | grep posix
remiレポジトリからyumらせて貰っているのですが、configure オプションで--disable-posixが指定されているようです。
コンパイルすれば良いのですが、それも大変だということで、代わりを探してみると、php_uname()という関数がありました。
php -r 'echo php_uname();' Linux hogehoge-host 2.6.18-194.11.1.el5 #1 SMP Tue Aug 10 19:09:06 EDT 2010 i686
posix_uname()は、下記のように項目ごとにarrayになっているので、特定情報を取りやすいのですが、まあ同じような情報を取得できそうです。
php -r 'print_r(posix_uname());' Array ( [sysname] => Linux [nodename] => mogemoge-host [release] => 2.6.18-194.11.4.el5 [version] => #1 SMP Tue Sep 21 05:09:20 EDT 2010 [machine] => i686 [domainname] => (none) )Tweet