2012-04-27 54 views
3

我搜索了很長一段時間,但我無法找到問題的明確答案,而PHP_OS包含的操作系統是建立在或運行於其上的。PHP_OS - 它是否包含它構建或運行的操作系統?

php_uname的PHP文檔(http://php.net/manual/de/function.php-uname.php)指出: 「對於剛剛操作系統的名稱,可以考慮使用PHP_OS不變,但要記住這個常量將包含操作系統PHP是建立在

但是,在同一頁面上有一條評論,從2006年開始說明: 」與最後一個註釋相反,PHP_OS確實顯示了PHP在當前運行的操作系統,[...]與此無關係統PHP建立在「。」

我無法在網絡上的任何地方找到關於這個問題的任何明確答案(有關php_uname和PHP_OS的主要內容大多隻包括os檢測和類似主題)。現在是什麼 - 文檔或評論?

的梨核包使用PHP_OS確定羯羊它的運行在類Unix系統或Windows,所以是安全的假設的文件確實是錯了嗎?

回答

5

我看了看源代碼。配置腳本這樣的:

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

然後main.c做到這一點:

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

這意味着PHP_OS在PHP是什麼在php_os在C代碼,這是由#define的頭文件由配置腳本構建,通過在配置時運行uname來確定。

因此,這是您所建立的系統,而不是您正在運行的系統。

有一些針對Windows的特殊代碼:main.c設置php_os"WINNT"如果定義了WIN32。但是,再次,這是在構建時,而不是在運行時,即使您設法在Unix上編譯並在Windows上運行,反之亦然。

+0

謝謝,我認爲這回答了這個問題。 我會在php.net上留言說舊評論似乎是錯誤的。 – Polygnome 2012-04-27 10:35:28

+0

如果我已經回答了您的問題並達到您的滿意程度,您應該接受答案。 (或者Jon的,如果你喜歡的話)。 – 2012-04-27 12:31:35

2

PHP_OS(PHP常量)是PHP模塊啓動時的常量defined。它的值爲comes,來自PHP_WIN32PHP_OS C常數(跟蹤最終導致this,但這不是回答問題所必需的)。

所以它描述的是系統PHP是內置的上。

相關問題