在PHP 5.2.6 / IIS CGI中清空$ _POST数组

时间:2008-11-24 00:46:35

标签: php iis

我遇到了一个非常奇怪的问题,在Windows XP上使用PHP 5.2.6 w / IIS(已尝试过CGI和ISAPI)。我正在使用默认的php.ini设置运行全新安装。

首先,假设以下(丑陋但有效)的HTML代码:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="test1" value="foo" />
<input type="hidden" name="test2" value="bar" />
<input type="submit">
</form>
<br /><br />
<pre>
<?php print_r($_POST); ?>
</pre>

提交表单时,我希望它能够显示一个包含两个隐藏变量的数组。相反,我看到的只是一个空数组。如果我将form方法更改为“get”并将print_r($ _ POST)更改为print_r($ _ GET),我看到数组项没有问题。

我尝试过诸如<?php print file_get_contents('php://input'); ?><?php echo print_r($HTTP_POST_VARS); ?>之类的变体无济于事。问题可能存在的任何想法?

2 个答案:

答案 0 :(得分:2)

好吧,如果它是任何安慰,那么你的代码就可以在PHP5中与Apache一起工作。

一个快速的谷歌透露了其他几个有同样问题但没有明确解决方案的人 - 最接近的是this ......

  

检查您的IIS配置并查看允许哪些动词用于PHP。   我的猜测是不包括POST。你应该有GET和POST   至少启用,或只是让你的生活轻松,并允许所有动词。

如果找到解决方案,请务必更新问题;我相信其他人会受益。

答案 1 :(得分:0)

好吧,我刚才有同样的问题。

PHP.ini文件很挑剔...请确保您没有“GB”,它应该是“G”。我的“post_max_size”为1GB而不是1G,PHP运行正常,除了POST请求。