使用lighttpd Web服务器时,$ _GET和$ _POST变量不存在

And*_*iov 7 php post get lighttpd

我在我的Windows计算机上安装lighttpd的Web服务器和我有一个问题:在PHP文件没有$_GET$_POST变量定义.

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

<?php

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

?>
Run Code Online (Sandbox Code Playgroud)

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

我收到此错误消息:

Notice: Undefined index: x in /srv/www/htdocs/tmp.php on line 3 x: ''
Run Code Online (Sandbox Code Playgroud)

当我把相同的文件放在公共托管上时,我得到:

x: '123'
Run Code Online (Sandbox Code Playgroud)

还有php命令:

empty ($_GET)
Run Code Online (Sandbox Code Playgroud)

返回true.

所有$ _POST变量都是一样的.

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

命令:

print_r($_SERVER); 
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

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 
)
Run Code Online (Sandbox Code Playgroud)

所以价值x=123存在于$_SERVER['QUERY_STRING']和中$_SERVER['REQUEST_URI'],但我不知道如何得到它.

小智 1

根据文档,这可能是由 php.ini 设置引起的variables_order

默认值是EGPCS,但如果它以某种方式更改并且不包含字母 G,则 GET 变量将被完全忽略并且$_GET为空。