Доступ к переменным $_SERVER из командной строки

Как получить доступ к переменным $_SERVER, которые я установил из командной строки в PHP?

Когда я пытаюсь вызвать созданный мной метод PHP, я получаю следующую ошибку, которая показывает, что все переменные $_SERVER определяются только тогда, когда мое приложение вызывается через его URL-адреса, то есть веб-сервер:

ERROR - Undefined index: MY_VAR /www/html/some_file.php
ERROR - Undefined index: MY_OTHER_VAR /www/html/some_file.php

Чтобы быть более конкретным, я использую Codeigniter, но не верьте в этом проблема.

Мысли?


person tim peterson    schedule 18.06.2014    source источник
comment
@tim — Как вы устанавливаете переменные сервера?   -  person Joel L    schedule 18.06.2014
comment
@tim — см. также: stackoverflow.com/questions/10731183/   -  person Joel L    schedule 18.06.2014
comment
@JoelL они установлены в NGINX fastcgi_params. Следуя передовым методам обеспечения безопасности, хочу, чтобы они не попадали в мое приложение.   -  person tim peterson    schedule 18.06.2014
comment
@JoelL Спасибо. Для нескольких переменных это список, разделенный запятыми?   -  person tim peterson    schedule 18.06.2014
comment
(я добавил ответ с некоторыми подробностями)   -  person Joel L    schedule 18.06.2014


Ответы (2)


Если вы устанавливаете переменные сервера в конфигурации вашего веб-сервера, они не будут присутствовать при доступе к PHP через командную строку. (Поскольку веб-сервер вообще не будет задействован.)

Чтобы использовать переменные $_SERVER в PHP-скрипте CLI, см.: Set $ _SERVER при вызове PHP из командной строки?


Подвести итоги:

запустить: VALUE_ONE=1 ANOTHER_VALUE=2 php cli.php

person Joel L    schedule 18.06.2014
comment
это выглядит великолепно, позвольте мне проверить, и тогда я приму. - person tim peterson; 18.06.2014

Некоторые переменные $_SERVER недоступны из командной строки, что логично, при использовании командной строки вы не указываете метод (GET/POST и т. д.), так что вы ожидаете, что $_SERVER["HTTP_METHOD"] будет ?

Одним из решений для получения всех переменных, установленных в $_SERVER, является их дамп:

var_dump($_SERVER);

А затем вызовите свой файл из командной строки, чтобы увидеть, какие переменные установлены.

Кроме того, всегда будьте осторожны при использовании переменной $_SERVER, ее поведение действительно зависит от платформы и других факторов.

всегда старайтесь:

if(isset($_SERVER["MY_VAR"])) {
  // do what you want here
}
person Shotgun    schedule 18.06.2014