Приветствую!
Только установил Moodle 3.1.2, делаю первые шаги в изучении этой платформы.
Установка прошла с предупреждениями (не критическими) по SOAP и XMLRPC, но так как обмениваться чем либо не планируем, то эти ошибки были пропущены.
В результате получилась работающая система и всё было хорошо (начали набивать курсы) пока не появилась необходимость удалить элемент или ресурс в курсе. При попытке его удалить, он исчезает, но с ошибкой "Ошибка обработки файла архива" и после обновления страницы появляется вновь.
Порывшись в течении нескольких часов по форумам, стало понятно, что ошибка имеет общие корни с ошибкой, которая возникает у некоторых пользователей при резервном копировании/восстановлении курсов. В частности, при попытке переноса курсов на новую платформу (3+).
Проследив ошибку отладчиком, наткнулся на функцию process_file_block в tgz_extractor, а именно в то место где проверяется наличие в заголовке последовательности "ustar".
$magic = substr($block, 257, 6);
Из-за того что эта последовательность не находится и вылетает ошибка "Debug: Header does not have POSIX ustar magic string\nError code: errorprocessingarchive\n* line 296 of /lib/filestorage/tgz_extractor.php". Ну и все остальные, так или иначе с этим связанные.
Посмотрев на $block стало понятно что последовательность присутствует, но не всегда на своём месте. Иногда, в процессе работы с архивом, эта последовательность для некоторых файлов оказывается не 257-м бате, а на 237. Т.е. речь идет о том что некорректно читается архив. Куда-то деваются эти 20 байт из начала заголовка файлов архива.
Так же, проанализировав информацию на формах, стало понятно что проблема не с moodle, а с настройками самого сервера.
Но вот куда дальше копать - ума не приложу.
Понимаю что не корректно работает php с архивами через gzopen. Но вот что править?
Может быть кто-то сталкивался и победил эту проблему?
CentOS7, PHP 5.6.26 (cli), MySQL 5.5.50