2010-03-31 73 views
2

当我尝试从命令行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 
... 

为什么?

回答

8

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

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

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

+1

谢谢!另外,如果我在参数中使用单引号,则不需要转义:) – user151841 2010-03-31 14:31:04

1

official documentation

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