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

时间:2010-03-31 14:23:12

标签: 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

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

$ 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
...

为什么?

2 个答案:

答案 0 :(得分:8)

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

php -r "print_r(\$_SERVER);"

否则shell会认为它是一个名为_SERVER的shell变量(你没有设置为任何东西),所以实际运行的是php -r "print_r();",这就是你得到错误“print_r()期望的原因至少有一个参数,0给出“。

答案 1 :(得分:1)

来自official documentation

  

您可能在$ _SERVER中找到或未找到以下任何元素。请注意,如果在命令行上运行PHP,则很少(如果有的话)可用(或确实有任何意义)。