2009-11-15 123 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