Назад | Перейти на главную страницу

PHP некорректно обрабатывает «большие» HTTP-запросы.

После обновления ОС «большие» HTTP-запросы больше не обрабатываются правильно веб-сервером / PHP / MediaWiki. Содержание статьи Wiki обрезается примерно после 6K символов, и MediaWiki сообщает о потере сеанса.

Симптомы: Сначала я обнаружил ошибку в моей ранее работавшей установке MediaWiki (PHP). Когда я редактирую статью и ее размер становится больше прибл. 6k символов, текст статьи обрезается, и MediaWiki отказывается сохранять новый текст, но сообщает об ошибке потери сеанса. Более мелкие статьи не затрагиваются.

Вопрос: Возможно, это ошибка PHP? Должен ли я подавать отчет об ошибке? Или я что-то не так делаю? Что-то неправильно настроено?

Контекст: Дома я недавно обновил свой raspbian LAMP сервер с wheezy до jessie. Раньше все работало хорошо.

  1. Операционная система: Raspbian jessie (ранее wheezi) на Raspberry Pi.
  2. Apache 2.4.
  3. phpinfo () не показывает никаких признаков suhosin, что иногда вызывает проблемы с большими http-запросами. Также не вызывают подозрений другие параметры PHP, которые иногда упоминаются как актуальные в Интернете: PHP версии 5.6.24-0 + deb8u1. max_input_time = 60, max_execution_time = 30, post_max_size = 8M

Что я пробовал до сих пор:

  1. Другая программа PHP: для дальнейшего исследования я загружал файлы с помощью простого сценария загрузки файлов PHP. Аналогичная проблема; загрузка файлов не работает. (Для справки, код сценария загрузки был взят отсюда: http://www.codingcage.com/2014/12/simple-file-uploading-with-php.html Скрипт использует данные простой формы, без Ajax, без JSON, ...)
  2. Более крупный файл вызывает разделение: более того, большие HTTP-запросы на загрузку файлов (с использованием файлов размером в несколько сотен КБ), по-видимому, разделяются на два запроса. Файл журнала доступа к apache показывает (помните, что на самом деле это всего лишь один запрос от браузера):
    • ... - - [05 / Aug / 2016: 10: 52: 38 +0200] "POST /simpleupload.php HTTP / 1.1" 200 85689 "https: //.../simpleupload.php"" Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 38.0) Gecko / 20100101 Firefox / 38.0 "
    • ... - - [05 / августа / 2016: 10: 52: 38 +0200] "\ xb4W \ xcd \ xff" 400 557 "-" "-" -
  3. Другие браузеры: поведение может быть воспроизведено в разных браузерах: Firefox в Linux, Firefox 38 в Windows и браузере elinks на том же компьютере.
  4. Устранение сетевых проблем: я использовал elinks для доступа к веб-серверу на локальном хосте. Те же проблемы в MediaWiki и скрипте загрузки файлов PHP.
  5. Повышенный уровень журнала: увеличение Apache LogLevel для отладки не приводит к появлению новой информации во время обработки запроса.
  6. Ошибка не возникает с Perl: проблема не возникает с другим сценарием загрузки файлов, написанным на Perl. Загрузка файла работает правильно. Итак, похоже, это не проблема с ОС, Apache, браузером, ...

Примечания: Это моя попытка перефразировать мой заблокированный / отложенный вопрос https://unix.stackexchange.com/questions/301444/small-http-requests-get-truncated, который я больше не могу редактировать.

В моем случае я выполнил инструкцию из https://wiki.debian.org/LaMp на «aptitude install php5 php5-mysql libapache2-mod-php5», который заменил установленный libapache2-mod-php5filter на libapache2-mod-php5. Это устранило мою проблему.

Вот ссылка на объяснение разницы между двумя пакетами: apache2 и php5: модуль или фильтр. Однако я не понимаю, почему в моем случае фильтр должен был вызвать странную проблему. Но, как бы то ни было, теперь это исправлено.