2009-11-15 125 views
2

我是一名PHP初学者,正在尝试一些非常简单的测试入门。

我似乎无法从$ _GET获取任何值。

这test.php的

#!/usr/bin/php 

<html> 
<body><h1>GET test</h1><p> 
<?php 
    print_r($_GET); 
?> 
</p></body></html> 

产生以下时http://my.url/test.php?aValue=A&bValue=B

<html> 
<body><h1>GET test</h1><p> 
Array 
(
) 
</p></body></html> 

叫我没有写访问为/etc/php.ini在服务器上,但检查了register_globals和它已关闭。

我也尝试过使用$ _POST方法,但这也行不通。

PHP版本:PHP 5.1.6

+2

尝试'回声$ _SERVER [ 'QUERY_STRING']'。这应该给你原始的查询字符串(在你的例子中aValue = A&bValue = B)。如果这给了你正确的值,那可能是一个配置错误 – 2009-11-15 04:57:56

+3

你是从命令行还是从浏览器调用它?第一行代码似乎表明你也通过命令行访问它。 – 2009-11-15 05:03:18

+0

谢谢杰弗里:回声$ _SERVER ['QUERY_STRING']工作,所以现在我只需要跟踪配置错误。 感谢加布里埃尔:我从浏览器调用它,但我发现,除非shebang线在那里,我得到了500错误。 – Myf 2009-11-16 03:01:54

回答

4

如果track_vars开启时,$ _GET和$ _POST变量才可用。

从PHP版本4.0.3开始始终自动启用。

你可以检查你的PHP版本,并检查在php.ini中的值track_vars

如果您检查phpinfo(),这也会有帮助。

<?php 
phpinfo(); 
?> 

检查

  • 东西叫--enable-track-vars,它应该存在。

  • _SERVER["argv"],如果你通过GET请求传递变量,应该包含一个数组。

  • 也“加载配置文件”应解析为您认为它的文件。

源:PHP: Description of core php.ini directives

+2

谢谢纳什。 PHP版本是PHP 5.1.6。我检查了php.ini,并没有设置track_vars。尽管如此,还是有一些关于默认情况的评论。我试过phpinfo(),它看起来是正确的(--enable-track-vars在那里)。 – Myf 2009-11-16 02:55:46