問題に解決: WebClプラットフォームを介してSecurityModをインストールしましたが、IISマネージャーにオプションのポップアップが表示されませんでした。 WebPIがインストールされていないかのように表示されるため、後でアンインストールできませんでした。だから、私はそれが正常にインストールされなかったと仮定し、それを忘れてしまった。
次に、Windowsのエラーログを確認し、SecurityModに多数のエントリがあることを確認しました。この問題を手動でアンインストールした後、すべてが意図どおりに動作します。
元の問題:
私はIIS 8.5とPHP 5.3.28のウェブサイトを持っていました。 PHP 7.0.5にアップグレードしました。
突然、私の$_POST
配列は、POSTフォームのページでは空です!コードは変更されませんでした。PHPをアップグレードし、いくつかのIIS設定を変更しました。
誰もこの問題を以前に持っていましたか?
編集:私はちょうど5.3.28に戻ってみると、前述の効果の代わりに、ページがちょうど読み込みと読み込みと読み込みであることに気づいた。
このバグを追跡する方法がわかりません。 IISのセキュリティ設定やプラグインがこれを引き起こす可能性がありますか?
EDIT 2: register globalsが私のPHP 5.3.28 ini configでオフになっていました。
サーバーサイドコード:
<?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>
EDIT 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
おそらく、グローバルなレジスタhttp://php.net/manual/en/security.globals.phpに頼っていたでしょう。だから、確実に完全なコードを投稿してください。 –
@ Fred-ii-投稿コード – Howie
'$ checkOk = $ _SESSION ['FirstKey'] == $ _POST ['key']; 'は' single =エラー報告が何かを投げ返すかどうかを見てください。http://php.net/manual/en/function.error-reporting.php - セッションも開始されていますか? –