从命令行调用PHP时设置$ _SERVER变量?

时间:2012-05-24 04:31:13

标签: php email command-line-interface piping

是否可以通过命令行将$ _SERVER变量传递给PHP脚本?

具体来说,我正在尝试手动设置$ _SERVER ['recipient'],以便我可以在不设置邮件服务器的情况下测试电子邮件管道。

5 个答案:

答案 0 :(得分:37)

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"

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我个人使用以下内容。

示例:在我的PHP命令行中设置 $ _ SERVER ['recipient]

使用OS X

  • 按照https://github.com/ersiner/osx-env-sync
  • 中的说明操作
  • 将以下行添加到文件“〜/ .bash_profile ”(如果它不存在则创建它)

    export recipient="something@example.com"

使用Ubuntu GNU / Linux

答案 3 :(得分:0)

您还可以传递两个或更多变量。例如:

$ SERVER_NAME="example.com" REQUEST_URI="?foo=bar" php script.php

<?php

print_r($_SERVER);

答案 4 :(得分:-4)

如何使用以下内容设置名为dummy.php的虚拟页面:

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