29

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

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

4

5 回答 5

43

在 *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"
于 2012-05-24T05:18:45.857 回答
2

@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 );
于 2014-07-29T20:33:56.267 回答
0

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

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

<?php

print_r($_SERVER);
于 2020-04-21T20:38:25.207 回答
0

我个人使用以下。

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

使用 OS X

使用 Ubuntu GNU/Linux

于 2016-01-06T17:26:29.040 回答
-5

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

<?php
    $_SERVER['recipient'] = 'me@gmail.com';
?>
于 2012-05-24T04:39:12.897 回答