Блог экспериментатора инженера-разработчика: Infanty.
Я пишу how-to статьи на редкие темы или статьи обзоры - для себя и тех кто со мной работает.
Блог существует при поддержке: "Оккупационных сил Марса".

Когда вместо веб-сервера используется Apache 2, то бывают две редкие ошибки при работе с Drupal которые мало кто знает как пофиксить. Первая ошибка это не сохранение больших текстов, а вторая не сохранение части полей ноды если в некоторые поля загружены картинки больших размеров.

При возникновении первой ошибки: первым делом обычно проверяют размер поля в таблице и увеличивают размер переменной max_allowed_packet в файле my.cnf (файл настройки MySQL).

При возникновении второй ошибки - первым делом изменяют переменные в файле php.ini (файл настройки PHP):

  • file_uploads=On — разрешает загрузку файлов на сервер по протоколу HTTP;
  • upoad_tmp_dir=/tmp — устанавливает каталог для временного хранения загруженных файлов;
  • upload_max_filesize=2M — устанавливает максимальный объем загружаемых файлов;
  • post_max_size=2M — устанавливает максимальный допустимый размер POST-данных. Это свойство также влияет на закачиваемые файлы. Чтобы закачивать большие файлы, это значение должно быть выше upload_max_filesize.

Вторым шагом при обоих ошибках будет увеличение значение переменной max_input_vars в php.ini. А так же увеличение значений переменных LimitRequestFieldsize и LimitRequestBody в файле apache.conf (файл настройки Apache 2).

Третьим шагом при обоих ошибках будет проверка наличия в PHP установленного дополнения: suhosin и при наличии, увеличение значение переменной suhosin.post.max_value_length, например в файле php.ini.

Последним шагом может стать отключение ModSecurity в Apache 2. ModSecurity - является хорошей и широко используемой в мире системой защиты серверов от различного типа атак, но так же иногда становится источником ряда проблем в работе сайта. Добавим следующие строки в файл .htaccess, для того что бы отключить mod_security:

SecFilterEngine Off 

При использовании ModSecurity2 всё гораздо сложнее. Но что бы не перенастраивать Apache и PHP, просто переименуем поля ноды таким образом, чтобы они не фильтровались ModSecurity2.