PHP_OS - 它包含它构建或运行的操作系统吗?

时间:2012-04-27 09:52:51

标签: php

我现在搜索了很长一段时间,但我找不到问题的明确答案,而常量PHP_OS包含操作系统php构建或运行。

php_uname(http://php.net/manual/de/function.php-uname.php)的php文档说明: “对于操作系统的名称,请考虑使用PHP_OS常量,但请记住,此常量将包含操作系统PHP 构建于 。”

然而,在同一页面上有一条2006年的评论说明: “与上一篇文章相反,PHP_OS确实显示当前运行的PHP PHP,[...]这与构建PHP的系统无关。”

我无法在网上找到关于这个问题的任何明确答案(topis关于php_uname和PHP_OS主要只涉及os检测和类似主题)。现在是什么 - 文档或评论?

pear-core软件包使用PHP_OS来确定它在类Unix系统或Windows上的 运行 ,因此可以安全地假设文档确实是错误的吗?

2 个答案:

答案 0 :(得分:5)

我看了一下源代码。 configure脚本执行此操作:

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中的PHP_OS是C代码中的php_os,这是由configure脚本构造的头文件的#defined,它由运行{{ 1}}在配置时。

所以,这是你构建的系统,而不是你运行的系统。

有一些针对Windows的特殊代码:如果定义了uname,则main.c会将php_os设置为"WINNT"。但是,同样,这是在构建时,而不是在运行时,即使您设法在Unix上编译并在Windows上运行,反之亦然。

答案 1 :(得分:2)

当PHP模块启动时,

PHP_OS(PHP常量)是一个常量defined。它的值comes来自PHP_WIN32PHP_OS C常量(跟踪后最终会导致this,但没有必要回答这个问题。)

所以它所描述的是系统PHP 内置

相关问题