$ _SERVER未使用命令行-r选项设置?

use*_*841 2 php command-line

当我尝试从命令行php打印$ _SERVER变量时,它认为没有设置$ _SERVER.

$ php -r "print_r($_SERVER);"
Warning: print_r() expects at least 1 parameter, 0 given in Command line code on line 1
Run Code Online (Sandbox Code Playgroud)

但是,当它在文件中时,从命令行运行它会设置它

$ cat test.php
<?
print_r($_SERVER);

$ php test.php
Array
(
    [TERM] => xterm
    [SHELL] => /bin/bash
    [SSH_CLIENT] => 192.168.1.101 49319 22
    [SSH_TTY] => /dev/pts/0
...
Run Code Online (Sandbox Code Playgroud)

为什么?

Ric*_*ams 8

您需要在命令行中转义$字符.

php -r "print_r(\$_SERVER);"
Run Code Online (Sandbox Code Playgroud)

否则shell会认为这是一个shell变量称为_SERVER(这你没有设置任何东西)等什么实际运行过的php -r "print_r();",这就是为什么你得到错误"的print_r()预计至少有一个参数,0给出" .