当我尝试从命令行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)
为什么?
您需要在命令行中转义$字符.
php -r "print_r(\$_SERVER);"
Run Code Online (Sandbox Code Playgroud)
否则shell会认为这是一个shell变量称为_SERVER(这你没有设置任何东西)等什么实际运行过的php -r "print_r();",这就是为什么你得到错误"的print_r()预计至少有一个参数,0给出" .