Вопрос по email, command-line-interface, php, piping – Установить переменную $ _SERVER при вызове PHP из командной строки?

24

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

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

не очень понятный вопрос, но, возможно, вы хотите: php script.php command_line_arguments_go_here user557846

Ваш Ответ

4   ответа
-4

ержанием:

<?php
    $_SERVER['recipient'] = '[email protected]';
?>
0

The answer by @sberry is correct.

... но потому что я пришел на эту страницу в поисках настройкиdefault values для$_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 );
36

$ recipient="[email protected]" php script.php

<?php

print_r($_SERVER);

Тестовое задание:

$ recipient="[email protected]" php script.php | grep recipient

[recipient] => [email protected]

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

$ export recipient="[email protected]"
$ setenv recipient="[email protected]"
Обратите внимание, что это также полезно для установки встроенных переменных, таких как $ _SERVER [& apos; HOST_NAME & apos;]. Работает как шарм!
Это не похоже на работу с PHP 5.6? О, это работает, если вы запускаете php script.php, но не если вы делаете php -S.
Есть ли причина, по которой это не работает для DOCUMENT_ROOT? Есть ли способ обойти это?
Есть ли альтернатива Windows здесь?
@JohnWiseman Я так же разочарован, как и ты! :( увидетьbugs.php.net/bug.php?id=67808
0

Пример: набор$_SERVER['recipient] в моей командной строке PHP.

With OS X

Follow the instructions in https://github.com/ersiner/osx-env-sync

Append the following line to the file '~/.bash_profile' (create it, if it does not exist)

export recipient="[email protected]"

With Ubuntu GNU/Linux

Append the following line to the file '/etc/environment' (create it, if it does not exist, see https://help.ubuntu.com/community/EnvironmentVariables)

[email protected]

Похожие вопросы