我刚刚安装了 WAMP,我可以访问本地主机并获取 phpinfo() 输出。
但是,虽然我可以看到 _SERVER['REQUEST_METHOD'] 设置为 GET,但我正在尝试使用以下 PHP:
if ($_SERVER["REQUEST_METHOD"]=="POST") {
...
但它会产生这个错误:
PHP Notice: Undefined index: REQUEST_METHOD in C:\ ... \test.php on line 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 查看)但不是全部。为什么不呢?
最佳答案
大多数 $_SERVER 指令由网络服务器设置。如果您使用的是 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');
}
关于php - $_SERVER ['REQUEST_METHOD' ] 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754388/