2

我刚刚安装了 WAMP,我可以访问 localhost 并获取 phpinfo() 输出。

但是,虽然我可以看到 _SERVER['REQUEST_METHOD'] 设置为 GET,但我正在尝试使用以下 PHP:

if ($_SERVER["REQUEST_METHOD"]=="POST") {
  ...

但它会产生这个错误:

PHP 通知:未定义索引:C:\ ... \test.php 中的 REQUEST_METHOD 第 40 行

使用 Komodo 在第 40 行停止并检查 $_SERVER——它在数组中根本没有“REQUEST_METHOD”——甚至没有 GET。

有人有想法么?我必须启用 POST、REQUEST_METHOD 吗?

为什么我可以在 phpinfo 中看到 REQUEST_METHOD=GET 而在 PHP 脚本中却看不到。

我也试过这个:

<?php
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
?>

我生成了一些 phpinfo(在浏览器中使用 localhost/?phpinfo=1 查看),但不是全部。为什么不?

4

2 回答 2

6

大多数 $_SERVER 指令由 Web 服务器设置。如果您使用的是 WAMP,那将是 Apache。您可以检查您的 apache 配置以找出未设置此值的原因。

最好在尝试使用值之前测试它们是否存在。

$value = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : null;

您甚至可以使用getenv()方法来缩短它。

$value = getenv('REQUEST_METHOD');

也没有必要做

<?php
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
?>

这就是您在空白 PHP 文件中所需要的全部内容。

<?php phpinfo();

我会这样写你的例子:

$request_method = strtoupper(getenv('REQUEST_METHOD'));
$http_methods = array('GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS');

if( ! in_array($request_method, $http_methods)
{
    die('invalid request');
}
于 2012-10-05T21:43:58.540 回答
0

就我而言,我在 php.ini 文件中variables_order从更改EGPCS

于 2021-08-28T11:19:06.330 回答