2012-04-27 41 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是内置的上。

相关问题