我现在搜索了很长一段时间,但我找不到问题的明确答案,而常量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上的 运行 ,因此可以安全地假设文档确实是错误的吗?
答案 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)