解决我的问题: 我之前已经通过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
答案 0 :(得分:0)
我明白了。这是导致问题的SecurityMod的默认配置。有趣的是,它在PHP 5.3与7.0中表现不同。
卸载它就可以了。