$ _SERVER ['_']等效于Windows

Jak*_*han 5 php windows environment-variables

在Linux上$_SERVER["_"]包含PHP解释器可执行文件的路径(例如/usr/bin/php -r 'echo $_SERVER["_"];'将打印/usr/bin/php).在Windows XP中使用PHP 5.3 $_SERVER["_"]NULL.

Art*_*cto 10

这与PHP本身无关.它是定义该环境变量的shell.PHP只是把它拿起来

例如,请看这里:

shell设置了一些默认的shell变量; PS2就是其中之一.在Korn shell中设置或使用的其他有用的shell变量是:

  • _(下划线) - 当shell执行外部命令时,这将在新进程的环境中设置为执行命令的路径.在交互式使用中,此参数也在父shell中设置为上一个命令的最后一个单词.
  • ...

我认为你在Windows中的最佳镜头是编写内部函数.例如

PHP_FUNCTION(get_php_path)
{
    char path[MAX_PATH];
    int result;

    if (zend_parse_parameters_none() == FAILURE)
        return;

    result = GetModuleFileNameA(NULL, path, MAX_PATH);

    if (result == 0)
        RETURN_FALSE;

    if (result == MAX_PATH) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Path is too large");
        RETURN_FALSE;
    }

    RETURN_STRINGL(path, result, 1);
}
Run Code Online (Sandbox Code Playgroud)

例:

>php -r "echo get_php_path()";
D:\Users\Cataphract\Documents\php-trunk\Debug_TS\php.exe

  • 很好解释为什么它不存在于Windows中. (2认同)