PHP升级时$ _POST为空

时间:2016-05-20 19:12:09

标签: php iis

解决我的问题: 我之前已经通过WebPI平台安装了SecurityMod,但我还没有在IIS管理器中看到任何弹出的选项。之后我无法卸载它,因为WebPI表明它从未安装过。所以,我认为它没有成功安装,只是忘了它。

然后我检查了Windows'错误日志和看到SecurityMod有一堆条目。手动卸载此东西后,一切都按预期工作!

原始问题:

我有一个关于IIS 8.5和PHP 5.3.28的网站。 现在我已升级到PHP 7.0.5。

突然之间,我的$_POST数组在POST表单的页面上是空的!代码没有改变,我刚刚升级了PHP并更改了一些IIS设置。

以前是否有人遇到此问题?

编辑:我刚刚尝试恢复到5.3.28并注意到,不是上述效果,页面只是加载和加载......而且从不加载。

我不确定如何追逐这个错误。任何IIS安全设置或插件都可能导致此问题吗?

编辑2: 在我的PHP 5.3.28 ini config中注册globals是关闭的。

服务器端代码:

<?PHP
ob_start(); 

require_once('conf.php');
require_once($path2root.'class/common.php'); // var defined in class/conf.php

$p = lib_GetUser(); // defined in class/common.php

print_r($_SESSION); // ok (outputs the generated id I've put in from the last request)
print_r($_POST); // empty!
print_r($_GET); // ok (outputs the id in the URL)

if (!isset($_GET['id'])) {
  exit();
}

$checkOk = false;
if(isset($_SESSION['FirstKey']) && isset($_POST['key'])) {
  $checkOk = $_SESSION['FirstKey'] == $_POST['key'];
  // this was true on the old version!
}

[...]

客户端:

<form name="form" method="post" action="Keytest.php?id=16336">
  <input type="hidden" name="key" value="174e2f46">
  <p>Hello</p>
  <input type="submit" value="ok">
  <input type="button" value="Back" onclick="history.go(-1);">
</form>

编辑3:5.3.28页面最终加载到500错误。

69. view trace  Error   -FASTCGI_REQUEST_TIMEOUT

70. view trace  Warning -SET_RESPONSE_ERROR_DESCRIPTION
ErrorDescription    C:\Program Files (x86)\PHP\v5.3\php-cgi.exe - The FastCGI process exceeded configured request timeout

71. view trace  Warning -MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName  FastCgiModule
Notification    EXECUTE_REQUEST_HANDLER
HttpStatus  500
HttpReason  Internal Server Error
HttpSubStatus   0
ErrorCode   The wait operation timed out.
 (0x80070102)
ConfigExceptionInfo 

1 个答案:

答案 0 :(得分:0)

我明白了。这是导致问题的SecurityMod的默认配置。有趣的是,它在PHP 5.3与7.0中表现不同。

卸载它就可以了。