2015-02-19 6 views
10

Переместив один из наших сайтов из Linux с Apache на Windows с помощью IIS (8.5), работающего под управлением PHP 5.6 через FastCGI, мы столкнулись с проблемой что file_get_contents('php://input') возвращает пустую строку для запросов PUT.file_get_contents ('php: // input'), возвращающий пустую строку с запросом PUT

Я создал следующий тест:

<?php 
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
    strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    die(file_get_contents('php://input')); 
} 
?> 
<!DOCTYPE html> 
<html> 
<head> 
    <script src="//code.jquery.com/jquery-2.1.3.min.js"></script> 
</head> 
<body> 
    <h2>POST:</h2> 
    <div id="post"></div> 

    <h2>PUT:</h2> 
    <div id="put"></div> 
    <script> 
     $.ajax({ 
      url: '?', 
      data: 'Working', 
      type: 'POST' 
     }).then(function(response) { 
      $('#post').html(response || 'Not working'); 
     }); 

     $.ajax({ 
      url: '?', 
      data: 'Working', 
      type: 'PUT' 
     }).then(function(response) { 
      $('#put').html(response || 'Not working'); 
     }); 
    </script> 
</body> 
</html> 

что приводит:

POST:

Рабочая

PUT:

не работает

Что может быть причиной этого?

+0

возможно конфликтует с IIS WebDAV-модулем. Также установите флажок «Параметры сопоставления обработчиков». – Deadooshka

ответ

1

Как выясняется, проблема вызвана модулем Helicon Ape (модулем для поддержки файлов конфигурации Apache .htaccess и .htpasswd). Удаление этого модуля устраняет проблему, но я до сих пор не знаю, почему это мешает PUT-запросам. Думаю, мне придется опубликовать тему на своем форуме с этой проблемой.

+0

PUT для спокойного запроса. –

+0

В чем же проблема? Я столкнулся с той же проблемой! Я не могу понять это! – Gacci

Смежные вопросы