Превышен максимально допустимый размер файла. Невозможно записать конфигурацию в режиме совместимости

Обновлено: 02.07.2024

В этом документе представлен набор жестких и мягких ограничений системы MongoDB.

Документы BSON

Максимальный размер документа BSON — 16 МБ.

Максимальный размер документа помогает гарантировать, что один документ не может использовать чрезмерный объем ОЗУ или во время передачи чрезмерную пропускную способность. Для хранения документов, превышающих максимальный размер, MongoDB предоставляет API GridFS. Дополнительную информацию о GridFS см. в mongofiles и документации для вашего драйвера.

Глубина вложенности для документов BSON

MongoDB поддерживает не более 100 уровней вложенности для документов BSON.

Ограничения на имена

Имена баз данных в MongoDB вводятся с учетом регистра. У них также есть дополнительное ограничение: регистр не может быть единственным различием между именами баз данных.

Если база данных salesDB уже существует, MongoDB вернет ошибку, если вы попытаетесь создать базу данных с именем salesdb .

Операция завершается успешно, и insertOne() неявным образом создает базу данных SalesDB.

Операция не удалась. insertOne() пытается создать базу данных salesdb и блокируется ограничением именования. Имена баз данных должны отличаться не только регистром.

Эта операция не возвращает никаких результатов, поскольку имена баз данных чувствительны к регистру. Ошибки нет, потому что find() не создает новую базу данных неявным образом.

Для развертываний MongoDB, работающих в Windows, имена баз данных не могут содержать ни один из следующих символов:

Кроме того, имена баз данных не могут содержать нулевой символ.

Ограничения на имена баз данных для систем Unix и Linux

Для развертываний MongoDB, работающих в системах Unix и Linux, имена баз данных не могут содержать ни один из следующих символов:

Кроме того, имена баз данных не могут содержать нулевой символ.

Длина имен баз данных

Имена баз данных не могут быть пустыми и должны содержать менее 64 символов.

Ограничение на имена коллекций

Имена коллекций должны начинаться со знака подчеркивания или буквы и не могут:

  • содержит $ .
  • быть пустой строкой (например, "" ).
  • содержат нулевой символ.
  • начнем с системы. приставка. (Зарезервировано для внутреннего использования.)

Если имя вашей коллекции содержит специальные символы, например символ подчеркивания, или начинается с цифр, то для доступа к коллекции используйте метод db.getCollection() в mongosh или аналогичный метод для вашего драйвера.

  • Для featureCompatibilityVersion установлено значение "4.4" или выше, MongoDB увеличивает ограничение пространства имен коллекции/представления до 255 байт. Для коллекции или представления пространство имен включает имя базы данных, разделитель в виде точки ( . ) и имя коллекции/представления (например, . ),
  • Для featureCompatibilityVersion, для которой установлено значение "4.2" или более ранняя, максимальная длина пространства имен коллекции/представления остается 120 байт.
  • Имена полей не могут содержать нулевой символ.
  • Сервер допускает хранение имен полей, содержащих точки ( . ) и знаки доллара ( $ ).
  • В MongodB 5.0 добавлена ​​улучшенная поддержка использования ( $ ) и ( . ) в именах полей. Есть некоторые ограничения. Дополнительные сведения см. в разделе Рекомендации по именам полей.

Имя поля _id зарезервировано для использования в качестве первичного ключа; его значение должно быть уникальным в коллекции, неизменяемым и может относиться к любому типу, кроме массива. Если _id содержит подполя, имена подполей не могут начинаться с символа ( $ ).

Предупреждения об именах

Будьте осторожны, проблемы, обсуждаемые в этом разделе, могут привести к потере или повреждению данных.

MongoDB не поддерживает повторяющиеся имена полей

Язык запросов MongoDB не определен для документов с повторяющимися именами полей. Разработчики BSON могут поддерживать создание документа BSON с повторяющимися именами полей. Хотя построитель BSON может не выдать ошибку, вставка этих документов в MongoDB не поддерживается, даже если вставка прошла успешно. Например, вставка документа BSON с повторяющимися именами полей через драйвер MongoDB может привести к тому, что драйвер автоматически удалит повторяющиеся значения перед вставкой.

Импорт и экспорт проблем со знаком доллара ( $ ) и точкой ( . )

Начиная с MongoDB 5.0, имена полей документа могут иметь префикс доллара ($) и могут содержать точки (.). Однако mongoimport и mongoexport могут не работать должным образом в некоторых ситуациях с именами полей, в которых используются эти символы.

MongoDB Extended JSON v2 не может различать оболочки типов и поля, которые имеют то же имя, что и оболочки типов. Не используйте расширенные форматы JSON в контекстах, где соответствующие представления BSON могут включать ключи с префиксом доллара ( $ ). Механизм DBRef является исключением из этого общего правила.

Также существуют ограничения на использование mongoimport и mongoexport с точками ( . ) в именах полей. Поскольку файлы CSV используют точку ( . ) для представления иерархии данных, точка ( . ) в имени поля будет неверно истолкована как уровень вложенности.

Возможная потеря данных со знаками доллара ( $ ) и точками ( . )

Существует небольшая вероятность потери данных при использовании имен полей с префиксом доллара ( $ ) или имен полей, содержащих точки ( . ), если эти имена полей используются в сочетании с неподтвержденными операциями записи (запись w=0 ) на серверах, которые старше, чем MongoDB 5.0.

При выполнении команд вставки, обновления и findAndModify драйверы, совместимые с версией 5.0, снимают ограничения на использование документов с именами полей, которые имеют префикс доллара ($) или содержат точки (.). Эти имена полей вызывали ошибку на стороне клиента в более ранних версиях драйвера.

Ограничения снимаются независимо от версии сервера, к которому подключен драйвер. Если драйвер версии 5.0 отправляет документ на старый сервер, документ будет отклонен без отправки ошибки.

Возможно, наиболее часто задаваемый вопрос на сайте moodle.org: "Как увеличить максимальный размер загружаемого файла?" Изменения, которые необходимо внести, одинаковы во всех версиях Moodle, просто в разных ОС их нужно делать в разных местах. Размеры загружаемых файлов ограничены несколькими способами, и каждый из них в этом списке ограничивает следующие:

  1. Уровень сервера
  2. Уровень сайта Moodle
  3. Уровень курса
  4. Уровень активности

Это спорный вопрос, в основном потому, что вы можете подумать, что его нужно устанавливать внутри Moodle. К сожалению, это не так, это вопросы окружения, которые нужно задавать в папках сервера и PHP, Moodle не может работать вне себя.

Физический доступ к серверу

Эти инструкции предполагают, что у вас есть полный физический и административный доступ к вашему серверу. Если вы используете размещенный сервер, вам, вероятно, придется искать другие способы увеличить размер загружаемого файла.

У обоих методов ниже есть как положительные, так и отрицательные стороны. Если вы измените файл php.ini, изменения повлияют на все приложения php на вашем сервере. Начиная с PHP5, на вашем сервере может быть только один файл php.ini. Однако метод php.ini будет работать со всеми веб-серверами. Метод .htaccess повлияет только на папку и все подпапки, в которые она помещена, но в Apache должны быть включены определенные настройки.

Ограничение размера файла — как это работает

Хозяин может установить ограничение на максимальный размер загружаемого файла в среде Сервера, который вы можете переопределить, если Хозяин позволит вам это сделать. В PHP есть параметр, который используется для ограничения размера файла, обрабатываемого при загрузке. Хозяин установил эту цифру в php.ini, основываясь на своем восприятии и потребностях своей клиентуры. Этот размер отображается в Moodle в Администрирование сайта > Безопасность > Настройки безопасности сайта > раскрывающийся список Максимальный размер загружаемого файла. Вы можете изменить это в любое время в соответствии с потребностями вашего сайта. На странице настроек курса также можно установить дополнительное ограничение. Ни в коем случае параметр «Курс» не может переопределить параметр «Сайт», а параметр «Сайт» не может переопределить параметр php.ini, который не может переопределить параметр «Сервер». Единственным исключением из этого правила является то, что вы можете манипулировать как сервером, так и настройками PHP, и как это сделать, описано ниже.

Изменение файла php.ini

Эти инструкции показывают, как изменить размер загружаемого файла, отредактировав файл php.ini.

По большей части эти инструкции сводятся к следующему. В файле /etc/php5/apache2/php.ini вам нужно изменить «post_max_size», «upload_max_filesize» и «max_execution_time» на значения, соответствующие вашим потребностям, используя любой редактор, к которому вы привыкли.

Ниже приведены построчные инструкции для различных установок Moodle.

Инструкции Ubuntu Linux

Эти инструкции предполагают, что вы установили стандартный пакет Moodle, PHP 5 и Apache 2 через apt-get и оставили все как установку по умолчанию. Если вы скомпилировали себя, я полагаю, вы знаете, где находятся ваши файлы php.ini! NB Поскольку последняя версия PHP сейчас 7.2+, вам может понадобиться найти файл. Если вы запустите phpinfo(), это должно дать вам правильное местоположение, которое будет выглядеть примерно так: /etc/php/7.3/apache2/php.ini

Вам необходимо отредактировать следующие три параметра в файле php.ini, расположенном по адресу: /etc/php5/apache2/ Здесь приведен набор инструкций, которым нужно следовать построчно.

  • Введите "sudo nano /etc/php5/apache2/php.ini"
  • Нажмите Ctrl и W и введите "post_max_size"
  • Измените значение на количество МБ, которое вы хотите, чтобы ваш сайт принимал в качестве загружаемых файлов.
  • Нажмите Ctrl и W и введите "upload_max_filesize"
  • Измените значение на количество МБ, которое вы хотите, чтобы ваш сайт принимал в качестве загружаемых файлов.
  • Нажмите Ctrl и W и введите "max_execution_time"
  • Измените значение на 600.
  • Нажмите Ctrl и O
  • Нажмите Ctrl и X.
  • Введите sudo apachectl restart

Системные администраторы NGINX также должны добавить «client_max_body_size XXXm;» в раздел «http» их основного файла конфигурации nginx. (см. дополнительную информацию), если у вас есть SSL, это потребует от вас установить вышеуказанное для сервера SSL и местоположения.

Теперь новое ограничение размера файла должно появиться в разделе Администрирование > Безопасность > Политики сайта > Максимальный размер загружаемого файла

Инструкции XAMPP для Mac

Это инструкции о том, как сделать это для Moodle на Mac с помощью доступного пакета загрузки образца XAMPP. (Это не для рабочего сервера OS X.)

  • Закройте Apache и MySQL, если они работают через приложение XAMPP Control, и закройте приложение XAMPP Control
  • Откройте Finder и перейдите в раздел «Приложения».
  • Перейдите вниз и откройте папку XAMPP / xamppfiles / etc
  • Откройте файл php.ini с помощью TextEdit (или другого текстового редактора)
  • Найдите параметр post_max_size и увеличьте его со 128 МБ (по умолчанию) до большего; 500 М – максимум.
  • Проделайте то же самое для upload_max_filesize (сделайте числа одинаковыми)
  • Найдите параметр max_execution_time и увеличьте его до 300 (или больше, если у вас есть тайм-ауты при загрузке)
  • Сохраните файл php.ini
  • перезапустите Apache и MySQL как обычно


Примечание. При сохранении файла php.ini вы можете получить сообщение об ошибке «Отказано в доступе», если только вы не вошли в систему с правами администратора на своем Mac. Чтобы обойти это, вы можете сделать каталог /etc, в котором находится файл php.ini, временно доступным для записи. Как это сделать, смотрите здесь или здесь.

Инструкции для Windows XP и Server 2003

В этих инструкциях предполагается, что вы загрузили последний zip-архив PHP 5.3.x для Windows и распаковали его в папку C:\PHP. Если вы установили PHP в другое место, измените все ссылки на "C:\PHP" на место, где вы установили PHP.

  • Откройте C:\PHP
  • Щелкните правой кнопкой мыши файл php.ini в этой папке и выберите "Открыть с помощью", выбрав нужный редактор.
  • Нажмите Ctrl + F и введите "post_max_size" (нажмите "Найти", где необходимо).
  • Измените значение на количество МБ, которое вы хотите, чтобы ваш сайт принимал в качестве загружаемых файлов.
  • Нажмите Ctrl + F и введите "upload_max_filesize" (при необходимости нажмите "Найти").
  • Измените значение на количество МБ, которое вы хотите, чтобы ваш сайт принимал в качестве загружаемых файлов.
  • Нажмите Ctrl + F и введите "max_execution_time" (нажмите "Найти", где необходимо).
  • Измените значение на 600.
  • Нажмите Ctrl и S или кнопку "Сохранить".
  • Выйдите из редактора.
  • Перезапустите веб-сервер, чтобы перезагрузить PHP с отредактированными изменениями.
    • Для IIS
    • Откройте меню "Пуск" на своем сервере и выберите "Выполнить".
    • Введите "iisreset/RESTART"
    • Для Apache 2 и Windows XP
    • Выберите "Пуск" > "Все программы" > "Apache" > "Перезагрузить".
    • Для Apache 2 и Windows Server
    • Следующая команда будет работать, если вы установили Apache 2 в качестве службы на свой сервер Windows.
    • Откройте меню "Пуск" на своем сервере и выберите "Выполнить"
    • Введите "httpd -k restart"

    Теперь новое ограничение размера файла должно появиться в разделе Администрирование > Безопасность > Политики сайта > Максимальный размер загружаемого файла

    ПРИМЕЧАНИЕ. Эти инструкции также относятся к установщику Xampp для Windows. Просто замените C:\PHP на C:\Moodle\server\php и перезапустите Moodle обычным стоп-стартом.

    Изменение файла конфигурации apache

    Инструкции Ubuntu Linux

    Возможно, вам также потребуется отредактировать файл config.php в каталоге moodle:

    • Введите "gksudo nautilus", чтобы получить root-права
    • Перейдите к /etc/moodle
    • Открыть apache.conf
    • Перейти в раздел " "
    • Изменить "php_value upload_max_filesize = 2M" на большее значение
    • Изменить "php_value post_max_size = 2M" на большее значение
    • Перейти в раздел " "
    • Изменить "php_value upload_max_filesize = 2M" на большее значение
    • Изменить "php_value post_max_size = 2M" на большее значение
    • Сохранить файл
    • Введите sudo /etc/init.d/apache2 restart

    Изменение файла .htaccess

    Следующие инструкции будут работать только на веб-сервере Apache, а также на сервере Apache должны быть разрешены переопределения. Традиционно вы могли использовать файлы .htaccess только тогда, когда PHP запускался как модуль Apache, но с Apache 2.2 это больше не так. Теперь вы можете использовать файл .htaccess как в модулях, так и в формах cgi. Кроме того, разрешение на использование файлов .htaccess приведет к снижению производительности сервера, что также нежелательно, поэтому уточните это у своего хоста.

    .htaccess — это распределенный файл конфигурации, то есть его можно использовать отдельно для каждой папки для настройки папки и подпапок каждого пользователя. Вы не можете изменить директиву «AllowOverrides» в файле конфигурации Apache с помощью файла .htaccess, только хост может установить это вручную. Обычно хост помещает файл .htaccess в корневой каталог вашего сайта, если он позволяет вам переопределить настройки сервера. Вы можете отредактировать его так же, как показано ниже, и установленные вами переопределения будут работать. Кроме того, вы можете создать свой собственный файл .htaccess в текстовом редакторе. Он также может называться как-то иначе, например .config. Если у вас есть файл, начинающийся с ., вы можете открыть его в текстовом редакторе просто из любопытства.

    Создайте файл с именем .htaccess в главном каталоге Moodle (где находится index.php, а не в каталоге moodledata), который содержит следующую информацию:

    20971520 — целочисленное значение для 20 МБ. Вы можете использовать следующий сайт для преобразования мегабайтов в байты.

    Более полное описание того, как редактировать файл .htacess, см. на этой странице Учебное пособие по Apache: файлы .htaccess

    Изменение конфигурации IIS 7.0/7.5 (Windows Server 2008, Windows Server 2008 R2)

    Сначала увеличьте активность и время ожидания запросов (позволяет успешно обрабатывать большие файлы при медленном соединении)

    Далее установите "Максимально допустимую длину содержимого"

    Размещенный сервер

    При размещении на размещенном сервере все может немного отличаться в зависимости от размера загружаемых и загружаемых файлов. Вероятно, вам предложат создать или изменить файл .htaccess или изменить файл php.ini.

    Прежде чем предпринимать какие-либо попытки, рекомендуется поговорить с поставщиком услуг. Вероятно, у них есть инструкции о том, как это сделать, и могут быть свои ограничения на размер загружаемого файла. Некоторые хосты измеряют размер файла в гигабайтах, а другие в мегабайтах. Если вас не устраивают их лимиты, проверьте свой контракт и подумайте о смене поставщика на того, у которого есть лимит и цена, которые вам нравятся.

    .htaccess с размещенным сервером

    Единственной целью файла .htaccess является переопределение текущих ограничений как сервера, так и файла php.ini. Ваш размещенный сервер должен сообщить вам, где этот файл должен быть размещен в вашем Moodle, но обычно достаточно в корневом каталоге. Возможно, у них уже есть стандартный файл, который вы можете использовать, если да, используйте его, но, возможно, нет.

    В файл .htaccess добавьте строки:

    Это ограничит загрузку до 128 МБ, но вы можете сделать ее любого размера, согласованного с вашим провайдером. Формулировка может незначительно отличаться в зависимости от требований сервера.

    Вы можете настроить максимальное количество проектов по умолчанию, которые новые пользователи могут создавать в своем личном пространстве имен. Это ограничение влияет только на новые учетные записи пользователей, созданные после изменения параметра. Этот параметр не имеет обратной силы для существующих пользователей, но вы можете отдельно изменить ограничения проекта для существующих пользователей.

    1. На верхней панели выберите Меню > Администратор.
    2. На левой боковой панели выберите «Настройки» > «Основные», затем разверните «Учетная запись и ограничение».
    3. Увеличьте или уменьшите это предельное значение для проектов по умолчанию.

    Если установить для параметра "Ограничение проектов по умолчанию" значение 0, пользователям не разрешается создавать проекты в личном пространстве имен своих пользователей. Однако проекты по-прежнему можно создавать в группе.

    Лимит проектов для пользователя

    1. На верхней панели выберите Меню > Администратор.
    2. На левой боковой панели выберите Обзор > Пользователи.
    3. Из списка пользователей выберите пользователя.
    4. Выберите "Изменить".
    5. Увеличьте или уменьшите предельное значение проектов.

    Максимальный размер вложения

    1. На верхней панели выберите Меню > Администратор.
    2. На левой боковой панели выберите «Настройки» > «Основные», затем разверните «Учетная запись и ограничение».
    3. Увеличьте или уменьшите, изменив значение в поле Максимальный размер вложения (МБ).

    Если вы выберете размер больше настроенного значения для веб-сервера, вы можете получить ошибки. Дополнительные сведения см. в разделе об устранении неполадок.

    Максимальный размер push-уведомлений

    1. На верхней панели выберите Меню > Администратор.
    2. На левой боковой панели выберите «Настройки» > «Основные», затем разверните «Учетная запись и ограничение».
    3. Увеличьте или уменьшите, изменив значение Максимальный размер push-уведомлений (МБ).

    Когда вы добавляете файлы в репозиторий через веб-интерфейс, ограничивающим фактором является максимальный размер вложения, поскольку веб-сервер должен получить файл, прежде чем GitLab сможет сгенерировать фиксацию. Используйте Git LFS для добавления больших файлов в репозиторий.

    Максимальный размер импорта

    Изменено с 50 МБ до неограниченного в GitLab 13.8.

    1. На верхней панели выберите Меню > Администратор.
    2. На левой боковой панели выберите «Настройки» > «Основные», затем разверните «Учетная запись и ограничение».
    3. Увеличьте или уменьшите, изменив значение Максимальный размер импорта (МБ).

    Если вы выберете размер больше настроенного значения для веб-сервера, вы можете получить ошибки. Дополнительную информацию см. в разделе об устранении неполадок.

    Префикс токена личного доступа

    • Появилось в GitLab 13.7.
    • Представлен префикс по умолчанию в GitLab 14.5.

    Вы можете указать префикс для токенов личного доступа. Вы можете использовать префикс для более быстрого поиска токенов или для использования с инструментами автоматизации.

    Префикс по умолчанию — glpat, но администраторы могут изменить его.

    Токены доступа к проекту также наследуют этот префикс.

    Установить префикс

    1. На верхней панели выберите Меню > Администратор.
    2. На левой боковой панели выберите «Настройки» > «Основные».
    3. Разверните раздел "Учетная запись и ограничения".
    4. Заполните поле префикса токена личного доступа.
    5. Нажмите "Сохранить изменения".

    Вы также можете настроить префикс с помощью API настроек.

    Ограничение размера репозитория

    Репозитории в вашем экземпляре GitLab могут быстро расти, особенно если вы используете LFS. Их размер может расти в геометрической прогрессии, быстро потребляя доступное хранилище. Чтобы этого не произошло, вы можете установить жесткое ограничение на размер ваших репозиториев. Это ограничение можно установить глобально, для группы или для каждого проекта, при этом предельные значения для каждого проекта имеют наивысший приоритет.

    1. Ваша команда разрабатывает приложения, для которых требуется хранение больших файлов в репозитории приложений.
    2. Несмотря на то, что вы включили Git LFS в свой проект, объем хранилища значительно увеличился.
    3. Прежде чем превысить доступное хранилище, вы устанавливаете ограничение в 10 ГБ на репозиторий.

    Как это работает

    Эти ограничения может устанавливать только администратор GitLab. Установка лимита на 0 означает, что ограничений нет.

    • Настройки каждого проекта:
      1. На главной странице проекта выберите «Настройки» > «Основные».
      2. Заполните поле Ограничение размера репозитория (МБ) в разделе Именование, темы, аватар.
      3. Нажмите "Сохранить изменения".
    • Настройки каждой группы:
      1. На главной странице группы выберите «Настройки» > «Основные».
      2. Заполните поле Ограничение размера репозитория (МБ) в разделе Именование, видимость.
      3. Нажмите "Сохранить изменения".
    • Глобальные настройки GitLab:
      1. На верхней панели выберите Меню > Администратор.
      2. На левой боковой панели выберите «Настройки» > «Основные».
      3. Разверните раздел "Учетная запись и ограничения".
      4. Заполните поле Ограничение размера на репозиторий (МБ).
      5. Нажмите "Сохранить изменения".

    Первая отправка нового проекта, включая объекты LFS, проверяется на размер. Если сумма их размеров превышает максимально допустимый размер репозитория, отправка отклоняется.

    Ограничение размера репозитория включает файлы репозитория и LFS, но не включает артефакты, загрузки, вики, пакеты или фрагменты. Ограничение размера репозитория применяется как к частным, так и к общедоступным проектам.

    Подробнее о ручной очистке файлов см. в разделе уменьшение размера репозитория с помощью Git.

    Устранение неполадок

    413 Объект запроса слишком велик

    При прикреплении файла к комментарию или ответу в GitLab отображается ошибка 413 Request Entity Too Large, максимальный размер вложения, вероятно, превышает допустимое значение веб-сервера.

    Чтобы увеличить максимальный размер вложения до 200 МБ при установке Omnibus GitLab, вам может потребоваться добавить следующую строку в файл /etc/gitlab/gitlab.rb перед увеличением максимального размера вложения:

    Настройка продолжительности сеанса для операций Git при включенной двухфакторной аутентификации

    • Появилось в GitLab 13.9.
    • Он развернут с флагом функции, отключенным по умолчанию.

    Администраторы GitLab могут настроить продолжительность сеанса (в минутах) для операций Git, когда включена двухфакторная аутентификация. Значение по умолчанию — 15, и его можно установить в диапазоне от 1 до 10080.

    1. На верхней панели выберите Меню > Администратор.
    2. На левой боковой панели выберите «Настройки» > «Основные».
    3. Разверните раздел "Учетная запись и ограничения".
    4. Заполните поле Продолжительность сеанса для операций Git при включенной двухфакторной аутентификации (минуты).
    5. Нажмите "Сохранить изменения".

    Ограничить время жизни ключей SSH

    • Появился в GitLab 14.6 с флагом ff_limit_ssh_key_lifetime. По умолчанию отключено.
    • Включено для самостоятельного управления в GitLab 14.6.
    • Общедоступно в GitLab 14.7. Флаг функции ff_limit_ssh_key_lifetime удален.

    Пользователи могут дополнительно указать время жизни ключей SSH. Это время жизни не является обязательным и может быть установлено на любое произвольное количество дней.

    Ключи SSH — это учетные данные пользователя для доступа к GitLab. Однако организации с требованиями безопасности могут захотеть усилить защиту, потребовав регулярной ротации этих ключей.

    Установить время жизни

    Только администратор GitLab может установить время жизни. Если оставить его пустым, ограничений нет.

    Читайте также: