Можно ли передать переменную $_SERVER в скрипт PHP через командную строку?
В частности, я пытаюсь установить $_SERVER['recipient'] вручную, чтобы проверить передачу электронной почты без настройки почтового сервера.
Можно ли передать переменную $_SERVER в скрипт PHP через командную строку?
В частности, я пытаюсь установить $_SERVER['recipient'] вручную, чтобы проверить передачу электронной почты без настройки почтового сервера.
На *никсе:
$ 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]"
Ответ @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['recipient] в моей командной строке PHP.
С OS X
Добавьте следующую строку в файл '~/.bash_profile' (создайте его, если он не существует)
export recipient="[email protected]"
С Ubuntu GNU/Linux
Добавьте следующую строку в файл '/etc/environment' (создайте его, если он не существует, см. https://help.ubuntu.com/community/EnvironmentVariables)
Вы также можете передать две и более переменных. Например:
$ SERVER_NAME="example.com" REQUEST_URI="?foo=bar" php script.php
<?php
print_r($_SERVER);
Как насчет создания фиктивной страницы с именем dummy.php со следующим содержимым:
<?php
$_SERVER['recipient'] = '[email protected]';
?>