$ _SERVER не установлен с параметром командной строки -r? - PullRequest
2 голосов
/ 31 марта 2010

Когда я пытаюсь напечатать переменную $ _SERVER из командной строки php, он думает, что $ _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 ]

8 голосов
/ 31 марта 2010

Вам нужно экранировать символ $ в командной строке.

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

В противном случае оболочка будет думать, что это переменная оболочки с именем _SERVER (которую вы не установили ни к чему), и поэтому на самом деле было выполнено php -r "print_r();", поэтому вы получаете сообщение об ошибке "print_r () ожидает по крайней мере 1 параметр, 0 дано ".

1 голос
/ 31 марта 2010

Из официальной документации

Вы можете или не можете найти любой из следующих элементов в $ _SERVER. Обратите внимание, что немногие из них, если таковые имеются, будут доступны (или действительно имеют какое-либо значение) при запуске PHP в командной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...