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

问题描述 投票:27回答:5

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

特别是我正在尝试手动设置$ _SERVER ['收件人'],以便我可以在不设置邮件服务器的情况下测试电子邮件管道。

php email command-line-interface piping
5个回答
40
投票

在* nix上:

$ 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]"

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

0
投票

我个人使用以下内容。

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

使用OS X

使用Ubuntu GNU / Linux


0
投票

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

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

<?php

print_r($_SERVER);

-4
投票

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

<?php
    $_SERVER['recipient'] = '[email protected]';
?>
© www.soinside.com 2019 - 2024. All rights reserved.