Установите переменную $ _SERVER при вызове PHP из командной строки?

Можно ли передать переменную $ _SERVER в PHP-скрипт через командную строку?

В частности, я пытаюсь установить $ _SERVER ['recipient'] вручную, чтобы я мог тестировать почтовые конвейеры без настройки почтового сервера.

On * nix:

$ recipient="email@domain.com" php script.php <?php print_r($_SERVER); 

Контрольная работа:

 $ recipient="email@domain.com" php script.php | grep recipient [recipient] => something@domain.com 

Или вы можете экспортировать его или setenv (в зависимости от вашей ОС), например

 $ export recipient="email@domain.com" $ setenv recipient="email@domain.com" 

Ответ от @sberry правильный.

… но поскольку я пришел на эту страницу, ища установки значений по умолчанию для массива $_SERVER , при запуске PHP из командной строки, вот мой собственный ответ. Надеюсь, это может помочь кому-то.

 empty( $_SERVER['HTTP_HOST'] ) && $_SERVER['HTTP_HOST'] = 'localhost'; empty( $_SERVER['REQUEST_URI'] ) && $_SERVER['REQUEST_URI'] = '/'; empty( $_SERVER['DOCUMENT_ROOT'] ) && $_SERVER['DOCUMENT_ROOT'] = __DIR__; print_r( $_SERVER ); 

Я лично использую следующее.

Пример: установите $ _SERVER ['получатель] в моей командной строке PHP.

С OS X

  • Следуйте инструкциям в https://github.com/ersiner/osx-env-sync.
  • Добавьте в файл ' ~ / .bash_profile следующую строку: (создайте ее, если она не существует)

    export recipient="something@example.com"

С Ubuntu GNU / Linux

Как насчет создания фиктивной страницы с именем dummy.php с этим содержимым:

 <?php $_SERVER['recipient'] = 'me@gmail.com'; ?>