У меня возникла очень странная проблема с PHP 5.2.6 с IIS в Windows XP (пробовал как 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>
Когда форма отправлена, я ожидаю, что она выведет массив, содержащий две скрытые переменные. Вместо этого я вижу только пустой массив. Если я изменю метод формы на «get» и изменю print_r ($ _ POST) на print_r ($ _ GET), я увижу элементы массива без проблем.
Я пробовал такие варианты, как <?php print file_get_contents('php://input'); ?> и <?php echo print_r($HTTP_POST_VARS); ?>, но безрезультатно. Есть идеи, в чем может заключаться проблема?






Что ж, если это вас утешает, ваш код работает так, как задумано в PHP5 с Apache.
Быстрый поиск в Google выявил еще пару человек с той же проблемой, но не нашел окончательного решения - ближе всего было это ...
Check your IIS configuration and see what verbs are permitted for PHP. My guess is that POST isn't included. You should have GET and POST enabled at a minimum, or just make your life easy and allow all verbs.
Не забудьте обновить свой вопрос, если найдете решение; Я уверен, что другие люди выиграют.
Ну, у меня была такая же проблема.
Файл PHP.ini придирчив ... убедитесь, что у вас нет "GB" вместо "G". У меня был "post_max_size" 1 ГБ вместо 1 ГБ, PHP работал нормально, за исключением запросов POST.
Спасибо, Флубба, но у меня в IIS включены все глаголы. По-прежнему не удается получить переменные POST в PHP.