Set $_SERVER variable when calling PHP from command line?

守給你的承諾、 提交于 2019-11-28 22:21:29

问题


Is it possible to pass a $_SERVER variable to a PHP script via the command line?

Specifically I am trying to set the $_SERVER['recipient'] manually so I can test email piping without setting up a mail server.


回答1:


On *nix:

$ recipient="email@domain.com" php script.php

<?php

print_r($_SERVER);

Test:

$ recipient="email@domain.com" php script.php | grep recipient

[recipient] => something@domain.com

Or, you can export it or setenv (depending on your OS), like

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



回答2:


The answer by @sberry is correct.

...but because I came to this page looking for setting default values for the $_SERVER array, when running PHP from command line, here is my own answer. Hope it might help somebody.

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 );



回答3:


I personally use the following.

Example: set $_SERVER['recipient] in my PHP command line.

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="something@example.com"

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)

    recipient=something@example.com




回答4:


How about setting up a dummy page called dummy.php with this contents:

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


来源:https://stackoverflow.com/questions/10731183/set-server-variable-when-calling-php-from-command-line

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!