2012-04-27 1 views
3

かなり長い間検索しましたが、定数php_OSにOSのPHPが組み込まれているか実行されているという質問に明確な答えが見つかりませんでした。PHP_OS - OSが組み込まれているか、実行されていますか?

php_unameのPHPのドキュメント(http://php.net/manual/de/function.php-uname.php)は述べている: を「ちょうどオペレーティングシステムの名称については、一定のPHP_OSの使用を検討しますが、覚えておいて、この定数は、オペレーティングシステムのPHPが含まれていますが上に構築されたました"

"最後のメモとは逆に、PHP_OSは現在PHPが動作しているOSを表示します[...]これはまったく関係ありませんシステムPHPが構築されました。

は、私はどこでも、この質問(php_unameとPHP_OSほとんど唯一のカバーOS検出と同様のトピックに関するtopis)に関するウェブ上の任意の明確な答えを見つけることができませんでした。ドキュメントやコメントは今のところ何ですか?

ナシコアパッケージは、それがそうドキュメントを想定することは安全である、Unixライクなシステム上またはWindows上のを実行しているだ天気を決定するためにPHP_OSを使用しています確かに間違っていますか? PHPモジュールの起動時

答えて

5

私はソースコードを見ました。 configureスクリプトは、この行います

PHP_OS=`uname | xargs` 
AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output]) 

をしてからmain.cはこの行います。PHPでPHP_OSがで#defineで定義されたものであるCコードにphp_osにあったものであることを意味し

char *php_os; 
php_os=PHP_OS; 
REGISTER_MAIN_STRINGL_CONSTANT("PHP_OS", php_os, strlen(php_os), CONST_PERSISTENT | CONST_CS); 

コンフィギュレーション時にunameを実行することによって決定されるconfigureスクリプトによって構築されたヘッダーファイル。

これは、実行していたシステムではなく、作成したシステムです。

Windowsのためのいくつかの特別なケースに入れたコードがあります:WIN32が定義されている場合main.cセット"WINNT"からphp_osが。しかし、これはまた、実行時ではなく、たとえUnix上でコンパイルしてWindowsで実行しても、その逆であっても、ビルド時に行われます。

+0

ありがとう、私はこれが質問に答えると思います。 私は、古いコメントが間違っているように見えることをphp.netに書き留めます。 – Polygnome

+0

質問に満足して答えた場合は、その回答を受け入れる必要があります。 (または、あなたがそれを好むなら、Jon's。) –

2

PHP_OS(PHP定数)が一定definedあります。 PHP_WIN32またはPHP_OS C定数(以下トレイルがようやくthisにつながり、それが質問に答える必要はありません)のいずれかからその値comes

だから何それは説明すると、PHPはを構築したシステムです。

関連する問題