当我尝试从命令行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
但是,当它在文件中时,从命令行运行它会设置
$ 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
...
为什么?
答案 0 :(得分:8)
您需要在命令行中转义$字符。
php -r "print_r(\$_SERVER);"
否则shell会认为它是一个名为_SERVER的shell变量(你没有设置为任何东西),所以实际运行的是php -r "print_r();"
,这就是你得到错误“print_r()期望的原因至少有一个参数,0给出“。
答案 1 :(得分:1)
您可能在$ _SERVER中找到或未找到以下任何元素。请注意,如果在命令行上运行PHP,则很少(如果有的话)可用(或确实有任何意义)。