gpt4 book ai didi

post - 使用 lighttpd 网络服务器时 $_GET 和 $_POST 变量不存在

转载 作者:可可西里 更新时间:2023-11-01 12:58:07 25 4
gpt4 key购买 nike

我在我的 Windows 计算机上安装了 lighttpd 网络服务器,但我遇到了一个问题:在 PHP 文件中没有定义 $_GET$_POST 变量。

例如我有这个简单的脚本(tmp.php):

<?php

echo "x: '" . $_GET ['x'] . "'<br />";

?>

当我去到地址:http://localhost/tmp.php?x=123

我收到此错误消息:

Notice: Undefined index: x in /srv/www/htdocs/tmp.php on line 3 x: ''

当我将同一个文件放在公共(public)主机上时,我得到:

x: '123'

还有 php 命令:

empty ($_GET)

返回真。

所有 $_POST 变量也是如此。

我的 php.ini 文件中是否有任何配置错误?

命令:

print_r($_SERVER); 

给出以下结果:

Array (
[SERVER_SOFTWARE] => lighttpd/1.4.20
[SERVER_NAME] => localhost
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[SERVER_PORT] => 80
[SERVER_ADDR] => 0.0.0.0
[REQUEST_METHOD] => GET
[REDIRECT_STATUS] => 200
[QUERY_STRING] => x=123
[REQUEST_URI] => /tmp.php?x=123
[REMOTE_ADDR] => 127.0.0.1
[REMOTE_PORT] => 3150
[CONTENT_LENGTH] => 0
[SCRIPT_FILENAME] => /srv/www/htdocs/tmp.php
[SCRIPT_NAME] => /srv/www/htdocs/tmp.php
[DOCUMENT_ROOT] =>
[SYSTEMROOT] => C:\WINNT
[HTTP_ACCEPT] => */*
[HTTP_ACCEPT_LANGUAGE] => en-gb
[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_HOST] => localhost
[HTTP_CONNECTION] => Keep-Alive
[WINDIR] => C:\WINNT
[PHP_SELF] => /srv/www/htdocs/tmp.php
[PATH_TRANSLATED] => /srv/www/htdocs/tmp.php
[REQUEST_TIME] => 1328287189
[argv] => Array (
[0] => /srv/www/htdocs/tmp.php )
[argc] => 1
)

因此值 x=123 存在于 $_SERVER['QUERY_STRING']$_SERVER['REQUEST_URI'] 中,但是我不知道如何得到它。

最佳答案

首先让我们确保我们没有遗漏任何东西。

试试这个

<?php
// test1.php
print('GET: '); // First missing semicolon
print_r($_GET);
print('HTTP_GET_VARS: '); // Second missing semicolon
print_r($HTTP_GET_VARS);
?>

再次尝试$_POST

制作一个简单的html表单并尝试发布。

<?php
// test2.php
print_r($_POST);
?>
<form method="POST">
<input type="text" name="myvar" />
<input type="submit""/>
</form>

我知道这些听起来很傻,但请尝试一下,以便我们排除它们。

您终于使用重写规则了吗?

查看 lighttpd.conf 中是否提及“url.rewrite”。 Lighttpd 不会像 apache 那样尝试猜测 URL,如果您使用重写,您必须明确告诉它包含查询字符串。例如(重要的部分以粗体显示 - 将它们添加到您的重写中)。

url.rewrite = ("^/([a-z]+)/([a-z]+)(?*)(.*)"=> "/index.php?controller=$1&action=$2&**$4 **”)

关于post - 使用 lighttpd 网络服务器时 $_GET 和 $_POST 变量不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9131887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com