Ошибка в типе содержимого bitrix

При переносе сотого сайта страндартными средствами битрикса (через restore.php) на спейсвеб возникла следующая ошибка:
The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

Что такое?

Одна из проблем — лишние символы в /bitrix/php_interface/ в файлах init.php, dbconn.php.

Также эта гадкая ошибка возникает из за сбоя в компрессии, проверить пытался ли битрикс отдавать сжатый контент можно посмотрев заголовки:

Content-Encoding: gzip	
Content-Length:4663

В этом случае решением будет принудительное отключение компрессии — в файле /bitrix/php_interface/init.php добавить константу

<?php
define('BX_COMPRESSION_DISABLED',true);
function getRealLink($ID = 0)
.....

Сколько же времени ушло на
решение этой проблемы :-/

ajax loader

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

ERR_CONTENT_DECODING_FAILED
Ошибка в типе содержимого. Страница, которую вы пытаетесь просмотреть, не может быть показана,
так как она использует неверную или не поддерживаемую форму компрессии

Лечение: прописать

define(‘BX_COMPRESSION_DISABLED’,true);

в bitrix/php_interface/init.php (dbconf.php если старый и нет такого файла)

Содержание

Mysql query error: (1227)

Ошибка

Mysql query error: (1227) Access denied; you need (at least one of) the SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation (400)

Решение

GRANT SESSION_VARIABLES_ADMIN ON *.* TO 'bitrix_user'@'localhost';

Ошибка в типе содержимого

ERR_CONTENT_DECODING_FAILED

Добавить в htaccess

zlib.output_compression = on

или добавить в bitrix/php_interface/init.php (или dbconf.php)

define('BX_COMPRESSION_DISABLED',true);

Ошибка сокетов в site_checker

Причин много (корявый hosts файл, нет модуля sockets итд).

Но оказывается всё из-за того, что на /bitrix/admin/ установлен htpasswd (логин/пароль).

Браво Битрикс! Райская система. Всем рекомендую.

Не меняется memory_limit

Ещё одна дикая проблема Битрикса. Тому кто это придумал надо пожать руку, а потом оторвать её.

Не меняется memory_limit для PHP. Меняю в php.ini, меняю в htaccess, меняю где только можно, а результата нет. Смотрю phpinfo там правильный и master value и local value.

Не первый день в айти. Надо просто копнуть глубже

# grep -r --include=*.php "memory_limit" /var/www/foobar.com/

Какой-то сверх мозг в этой шайтан конторе решил, что будет весело прибить memory_limit гвоздями, потом полить супер-клеем и ещё сверху залить бетоном всё это дело. Ха-ха-ха, !@#$% смешно.

/var/www/foobar/bitrix/modules/main/admin/site_checker.php:                  @ini_set("memory_limit", "512M");
/var/www/foobar/bitrix/modules/main/classes/general/file.php:                        $memoryLimit = CUtil::Unformat(ini_get('memory_limit'));
/var/www/foobar/bitrix/modules/main/classes/general/site_checker.php:                        array('check_memory_limit' => GetMessage('SC_T_MEMORY')),
/var/www/foobar/bitrix/modules/main/classes/general/site_checker.php:        function check_memory_limit()
/var/www/foobar/bitrix/modules/main/classes/general/site_checker.php:                        $cur = ini_get('memory_limit');
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:               $memoryLimit = WelcomeStep::unformat(ini_get('memory_limit'));
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                       $memoryLimit = WelcomeStep::unformat(get_cfg_var('memory_limit'));
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                       @ini_set("memory_limit", "64M");
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                       $memoryLimit = WelcomeStep::unformat(ini_get('memory_limit'));
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                                       '.($memoryLimit > 0 && $memoryLimit < $this->memoryMin*1048576 ? $this->ShowResult(ini_get('memory_limit'), "ERROR") : $this->ShowResult(ini_get('memory_limit'), "OK")).'
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                       $fileContent .= "n@ini_set("memory_limit", "1024M");n";
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                       $memoryLimit = WelcomeStep::unformat(ini_get('memory_limit'));
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                               $memoryLimit = WelcomeStep::unformat(get_cfg_var('memory_limit'));
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                               @ini_set("memory_limit", "512M");
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                               $memoryLimit = WelcomeStep::unformat(ini_get('memory_limit'));
/var/www/foobar/bitrix/modules/main/install/wizard/wizard.php:                                       $fileContent .= "n@ini_set("memory_limit", "512M");n";
/var/www/foobar/bitrix/modules/main/lang/en/admin/site_checker.php:PHP defines the memory limit in php.ini by setting the <b>memory_limit</b> parameter. However, this may be overridden on shared hostings. You should not trust this parameter.
/var/www/foobar/bitrix/modules/main/lang/en/admin/site_checker.php:The test attempts to increase the value of <b>memory_limit</b> using the code:
/var/www/foobar/bitrix/modules/main/lang/en/admin/site_checker.php:<code>ini_set(&quot;memory_limit&quot;, &quot;512M&quot;)
/var/www/foobar/bitrix/modules/main/lang/en/admin/site_checker.php:$MESS["SC_MEMORY_CHANGED"] = "The value of memory_limit was increased from #VAL0# to #VAL1# using ini_set while testing.";
/var/www/foobar/bitrix/modules/main/lang/ru/admin/site_checker.php:$MESS["SC_MEMORY_CHANGED"] = "Значение memory_limit было увеличено с #VAL0# до #VAL1# на момент тестирования через ini_set.";
/var/www/foobar/bitrix/modules/main/lang/ru/admin/site_checker.php:Основной параметр ограничения памяти в php.ini - это <b>memory_limit</b>. Но доверять значению параметра нельзя, т.к. на хостингах могут быть установлены дополнительные ограничения памяти.
/var/www/foobar/bitrix/modules/main/lang/ru/admin/site_checker.php:Обратите внимание, тест пытается увеличить значение <b>memory_limit</b> используя код:
/var/www/foobar/bitrix/modules/main/lang/ru/admin/site_checker.php:<code>ini_set(&quot;memory_limit&quot;, &quot;512M&quot;)
/var/www/foobar/bitrix/php_interface/dbconn.php:@ini_set("memory_limit", "128M");
/var/www/foobar/cli/parse_list.php:ini_set('memory_limit', '2048M');
/var/www/foobar/local/php_interface/dbconn.example.php:@ini_set("memory_limit", "128M");

Вот почему у меня парсер в админке не работал. Из-за 128M memory_limit. Даже не знаю какой мемчик бы подошёл для этой ситуации лучше — Друзь с его вы там ох!@#$% или Винни Пух ныряющий в болото. Битрикс💩, а WordPress, Joomla, Drupal по сравнению с этим платным💩 просто топчик.

DB query error. Please try later

В файле /bitrix/php_interface/dbconn.php установить

$DBDebug = true;

Обновляем страницу сайта, чтобы увидеть в чем проблема.

The script encountered an error

The script encountered an error and will be aborted. To view extended error messages, enable this feature in .settings.php.

Установить ‘debug’ ⇒ true в bitrix/.settings.php (в старых версиях bitrix/php_interface/dbconn.php).

Сайт rtfm.wiki использует cookies и трекинг посещений. Продолжая использовать этот сайт, вы соглашаетесь с сохранением файлов cookie на вашем компьютере. Если вы не согласны покиньте сайт или включите Adblock 😎 Что такое cookies? 🍪

  • Bitrix долго грузится каталог
  • Bitrix ошибка отсутствуют цены
  • Ошибка в типе содержимого bitrix
  • 500 ошибка bitrix
  • Не работает сео битрикс

Не бывает идеальных систем. Так и 1С-Битрикс, при всех своих достоинствах, имеет в несколько детских болезней, которые мы и рассмотрим. А чтобы быть максимально объективными важно помнить, что большинство этих ошибок – результат низкого качества сборки проекта и отсутствия профессиональной технической поддержки, что снижает срок службы любого проекта, вне зависимости от используемой системы.

Перед началом работ, как всегда, рекомендуется сделать полное резервное копирование базы данных и файлов проекта. А также включить журнал ошибок веб-сервера error.log. Сделать это можно как самостоятельно в настройках
панели управления хостингом, так и обратившись за помощью в техническую
поддержку хостера.

Bitrix долго грузится каталог

Система очень требовательна к ресурсам, но поверьте может обеспечить загрузку страниц каталога в пределах 0.2 секунды. Для этого есть система кеширования, технология композитный сайт, фасетный индекс для «умного» фильтра. Поэтому если вы столкнулись с проблемой долгой загрузки каталога, то стоит провести диагностику:

  • Кеширование
    Убедитесь, что все используемые на странице каталога компоненты используют кеширование.
  • Компоненты
    Какой бы мощный сервер вы не купили, если на странице несколько десятков комплексных компонентов 1С-Битрикс, то как минимум в момент разогрева кеша скорость загрузки страницы у вас будет несколько секунд. Постарайтесь снизить количество используемых компонентов.
  • Композитный сайт
    Обязателен к включению в интернет-магазинах.
  • Мониторинг производительности. Вообще этот пункт должен быть первым, но он требует технических навыков. Встроенный инструмент анализа производительности Битрикса — полезная штука. Для быстрого анализа сразу ищем – медленные SQL-запросы, так как база данных всегда самое слабое звено.
  • PHP
    На сервере должна использоваться версия PHP не ниже 7.1. Если такой возможности нет, то хотя бы для 5.6 должны стоят акселераторы на выбор: XCache, eAccelerator, APC.
  • Nginx
    В качестве веб-сервера рекомендуем использовать более производительный сервер Nginx отечественной разработки.

Bitrix ошибка отсутствуют цены

Самая простая и распространная ошибка, которую ошибкой даже тяжело назвать. В Битриксе есть несколько типов цен (Магазин > Настройки > Цены > Типы цен). Удаляете ненужные, в настройках компонента каталога/новинок и других связанных с магазином выставляете нужный тип цены.

Ошибка в типе содержимого bitrix

Ошибка не появляется на ровном месте, значит недавно были правки или вообще переезд на другой сервер. В каком-то из файлов, в результате ошибки php или кодировки файла при сохранении, идет вывод содержимого страницы (текст ошибки это тоже текст) до служебных http-заголовков. Рекомендуем в первую очередь посмотреть недавно отредактированные файлы на предмет кодировки UTF-8 с BOM и сделать UTF-8 без BOM.

Например, так:

grep -rl $'xEFxBBxBF' .

500 ошибка bitrix

Ошибка 500 Internal Server Error или «Белый экран смерти» требует дополнительной диагностики. Для этого и нужен error.log веб-сервера, а также режим отладки самого Битрикс. Чаще всего это синтаксические ошибки в php-файлах или .htaccess, которые легко можно найти по последним записям логов или дате последнего редактирования файлов на сервере.

Не работает сео битрикс

Переключите шаблон компонента на стандартный, чтобы исключить вероятность ошибки в кастомизированном под ваш сайт шаблоне компонента. Проверьте корректность настроек вывода компонента. Для работы с SEO комплексные компоненты, на примере компонента новостей имеют отдельные настройки: SET_META_KEYWORDS, SET_META_DESCRIPTION.

Возможно вам будет интересно

  • Поддержка сайта на 1С-Битрикс
  • Перенос сайта на 1С-Битрикс
  • Модули для 1С-Битрикс

Экономьте свое время — делегируйте работу с Битрикс нам

Сложно? Только не для нас!

Мы оказываем техническую поддержку сайтов на Битрикс с 2010 года. Яндекс официально рекомендует наш модуль для работы с собственным сервисом турбо-страниц.

Бесплатная консультация 8 (800) 350-81-86

В заметке собраны некоторые проблемы с Bitrix Framework и VMBitrix, а так же приведены способы их решения.

Важно: описанные ниже действия потенциально опасные и могут привести к неработоспособности вашего сайта, выполняйте их осознанно на свой страх и риск.

Прежде чем затронуть функциональность сайта не забудьте сделать бэкап.

Как уменьшить размер БД

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

Разросшуюся базу данных можно подчистить. Однако если 1С-Битрикс продолжает необоснованно расти, возможно проблема глубже и выходит за рамки данной статьи.

Как очистить статистику Веб-аналитики

В админке перейдите в Настройки > Настройки продукта > Настройки модулей > Веб-аналитика. В разделе Очистка статистики укажите до какой даты выполнить очистку (если оставить незаполненным, то будет очищена вся статистика) и нажмите кнопку Очистить.

Как удалить записи из Журнала событий

В настройках главного модуля, на вкладке Журнал событий, уменьшите количество дней для хранения событий. Чем меньше дней хранятся записи, тем меньше весит таблица. Дополнительно можно исключить типы событий, которые не нужно записывать в таблицу. База уменьшится не сразу, Битрикс потребуется некоторое время на удаление старых событий.

Более быстрый и радикальный вариант – очистить таблицу b_event_log через SQL-запрос. При этом будут удалены все события!

Если таблица не очень большая, выполните запрос через админку: Настройки > Инструменты > SQL запрос (или на странице you.site/bitrix/admin/sql.php).

DELETE FROM `b_event_log`;

Если таблица огромная (больше 4Гб), то скорее всего запрос не выполнится и отвалится по тайм-ауту. В таком случае выполнить запрос лучше из консоли MySQL на сервере, примерно так:

mysql -h you_sql_server -u root -p

USE you_db_name;

DELETE FROM `b_event_log`;

При большем размере придётся набраться терпения, очистка моей 9 гиговой таблицы заняла около часа.

К слову, поврежденную таблицу можно восстановить командой.

REPAIR table b_event_log;

Как очистить разросшуюся таблицу b_cache_tag

Перейдите в Настройки продукта > Автокэширование > Очистка файлов кэша.

Затем аналогично действиям описанным в предыдущем разделе выполните:

TRUNCATE TABLE b_cache_tag

Где изменить mbstring.internal_encoding и mbstring.func_overload

Значения mbstring.func_overload и mbstring.internal_encoding зависят от вашего сайта, используемой кодировки и проблемы, которую решаете.

Вариант 1 (для Apache и PHP ниже версии 7.3). Установить необходимые значения в файле .htaccess.

php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8

Вариант 2 (так же для PHP ниже версии 7.3). Добавить параметры в файле настройки виртуальных хостов. Для Apache это:

  • /etc/apache2/sites-available/сайт.conf (если использется BitrixVM)
  • /etc/apache2/httpd.conf
  • /etc/apache2/apache2.conf
<VirtualHost *:80>
  ServerAdmin ...
  ServerName ...
  ServerAlias ...
  DocumentRoot "/путь/к/папке/сайта"

  php_admin_value mbstring.func_overload 2
  php_admin_value mbstring.internal_encoding UTF-8
</VirtualHost>

Вариант 3 (для всех версий PHP). Установить необходимые значения в php.ini, для BitrixVM /etc/php.d/z_bx_custom.ini. После внесения изменений нужно перезагрузить сервер.

Начиная с версии PHP 7.3  значение mbstring.func_overload нельзя установить индивидуально для конкретного сайта, ни через .htaccess, ни через конфигурационный файл Apache. Единственный вариант – установить значение mbstring.func_overload непосредственно в файле php.ini. Однако php.ini общий и если на сервере несколько сайтов, то они могут перестать работать, например если часть сайтов работает в кодировке UTF-8, а часть на cp1251.

Смена кодировки Битрикс на UTF8

Для PHP установите следующие параметры.

mbstring.func_overload 2
mbstring.internal_encoding UTF-8

Удалите модули Поиск без сохранения таблиц и Веб-аналитика (без сохранения таблиц, но с сохранением шаблонов сообщений).

Из словаря транслита в модуле Форум (Сервисы > Форумы > Фильтр нецензурных слов > Словарь транслита) удалить букву ё (ID = 7).

В настройках сайта изменить кодировку с windows-1251 на utf-8.

В файле /bitrix/php_interface/dbconn.php установить для константы BX_UTF значение true.

define("BX_UTF", true);

Скачать с сайта 1С-Битрикс скрипт convert_utf8.php, поместить его в корень сайта, затем запустить и дождаться полного выполнения.

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

SELECT CONCAT('ALTER   TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;') as

sqlcode

FROM `information_schema`.`TABLES` t

WHERE 1

AND t.`TABLE_SCHEMA` = 'database_name' ORDER BY 1

Где database_name – имя базы данных сайта.

В результате будет выведен новый запрос, который нужно скопировать и выполнить. По завершении таблицы базы данных будут переведены в кодировку UTF-8.

Далее пропишите в /bitrix/php_interface/after_connect.php:

$DB->Query("SET NAMES 'utf8'");
$DB->Query('SET collation_connection = "utf8_unicode_ci"');

В файл /bitrix/php_interface/after_connect_d7.php:

$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"'); 

В /bitrix/.settings.php:

return array (
  'utf_mode' => 
  array (
    'value' => true,
    'readonly' => true,
  ),

Затем полностью очистите кэш сайта.

Удалите более ненужный скрипт convert_utf8.php.

Заново установите модуль Поиск и сделайте переиндексацию.

Установите модуль Веб-аналитика (если использовали ранее).

Если возникли проблемы с сериализованными массивами возможно сможет помочь скрипт.

Дополнительные сведения на dev.1c-bitrix.ru и тема на форуме.

Если выкидывает из админки Битрикс

После ввода логина и пароля снова открывается страница авторизации

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

Вторая причина – переполнения дискового пространства сервера. Очистите место на диске, удалите лишние бэкапы или докупите место (если это возможно) у своего хостинг-провайдера.

Периодически выкидывает из админки

Такое может происходить если в качестве DNS-сервера используется Cloudflare или аналог, например для использования SSL-сертификатов или защиты от DDoS. В этом случае, сессию обрывает механизм защиты Битрикс. Cloudflare подменяет ip-адрес пользователя и админка пресекает доступ. Для исправления внесите в dbconn.php следующие правки:

$_SERVER["REMOTE_ADDR"] = $_SERVER['HTTP_CF_CONNECTING_IP'];

Однако после окончания работы в админке, лучше вернуть исходные настройки dbconn.php, ради безопастности.

Другой причиной вылетов, может быть наличие лишних символов или пробелов в файлах dbconn.php, after_connect.php, after_connect_d7.php, особенно в начале или в конце файла. Исправьте и проблема должна решиться.

Не отправляется почта

Если перестала отправляться почта на Яндекс

После многих лет пользования Яндекс.Почтой для отправки сообщений от интернет-магазина на Битрикс, почта перестала работать. В логах ошибка:

Sender or From header address rejected: not owned by authorized user

Одна из причин по которой это может произойти: адрес почты, под которой авторизируется сервер, отличается от почты (поле «From», «От кого») указанной на сайте.

Раньше такая схема вполне себе работала на Яндекс. В Битрикс можно было указать почту, например my@company.ru, при том, что сервер отправлял ее с ящика info@yandex.ru. Получатель письма все равно в отправителях видел почту my@company.ru.

Но начиная с 2020 года, Яндекс постепенно запрещает отправку писем если поле «From» отличается от адреса пользователя, с данными которого производится авторизация на сервере.

Решений несколько:

  • указать на сайте почту, под которой происходит авторизация на сервере, что в случае использования почты на Яндекс возможно будет не очень солидным;
  • поднять свой почтовый сервер и настроить отправку с него;
  • арендовать недорогой хостинг, который позволяет отправлять письма даже если поле «From» отличается от адреса пользователя, с данными которого производится авторизация на сервере. Например REG.RU предоставляет такую возможность, подойдет даже самый простой тариф дешевле 100 руб. в мес.

Свою проблему решил, выбрав третий вариант. Рекомендую хостинги:

  • REG.RU (промокод на скидку для заказа домена или хостинга: 2229-CC0A-AC4D-C31B)
  • Hostland (месяц бесплатно)

Логирование почты

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

Добавьте в dbconn.php следующие строки.

// определим константу LOG_FILENAME, в которой зададим путь к лог-файлу
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/mylog-123.txt");

//дебаг почты
function custom_mail($to, $subject, $message, $additional_headers='', $additional_parameters='')
{
   AddMessage2Log(
            'To: '.$to.PHP_EOL.
            'Subject: '.$subject.PHP_EOL.
            'Message: '.$message.PHP_EOL.
            'Headers: '.$additional_headers.PHP_EOL.
            'Params: '.$additional_parameters.PHP_EOL
         );
   if ($additional_parameters!='') {
      return @mail($to, $subject, $message, $additional_headers, $additional_parameters);
   } else {
       return @mail($to, $subject, $message, $additional_headers);
   }
}

Теперь, при отправке письма в лог будут писаться сообщения.

Проблемы с отправкой уведомления о заполнении веб-форм

Для начала проверьте, настройки почтового события заполнения формы и его шаблона. Откройте Панель управления > Настройки > Настройки продукта > Почтовые события > Типы событий и выберите интересующее событие.

На вкладке Тип события, убедитесь, что отмечены галочки возле используемых на сайте кодов языка.

Тип почтового события Битрикс

The script encountered an error

The script encountered an error and will be aborted. To view extended error messages, enable this feature in .settings.php.

Установить ‘debug’ ⇒ true в bitrix/.settings.php (в старых версиях bitrix/php_interface/dbconn.php).

Сайт rtfm.wiki использует cookies и трекинг посещений. Продолжая использовать этот сайт, вы соглашаетесь с сохранением файлов cookie на вашем компьютере. Если вы не согласны покиньте сайт или включите Adblock 😎 Что такое cookies? 🍪

  • Bitrix долго грузится каталог
  • Bitrix ошибка отсутствуют цены
  • Ошибка в типе содержимого bitrix
  • 500 ошибка bitrix
  • Не работает сео битрикс

Не бывает идеальных систем. Так и 1С-Битрикс, при всех своих достоинствах, имеет в несколько детских болезней, которые мы и рассмотрим. А чтобы быть максимально объективными важно помнить, что большинство этих ошибок – результат низкого качества сборки проекта и отсутствия профессиональной технической поддержки, что снижает срок службы любого проекта, вне зависимости от используемой системы.

Перед началом работ, как всегда, рекомендуется сделать полное резервное копирование базы данных и файлов проекта. А также включить журнал ошибок веб-сервера error.log. Сделать это можно как самостоятельно в настройках
панели управления хостингом, так и обратившись за помощью в техническую
поддержку хостера.

Bitrix долго грузится каталог

Система очень требовательна к ресурсам, но поверьте может обеспечить загрузку страниц каталога в пределах 0.2 секунды. Для этого есть система кеширования, технология композитный сайт, фасетный индекс для «умного» фильтра. Поэтому если вы столкнулись с проблемой долгой загрузки каталога, то стоит провести диагностику:

  • Кеширование
    Убедитесь, что все используемые на странице каталога компоненты используют кеширование.
  • Компоненты
    Какой бы мощный сервер вы не купили, если на странице несколько десятков комплексных компонентов 1С-Битрикс, то как минимум в момент разогрева кеша скорость загрузки страницы у вас будет несколько секунд. Постарайтесь снизить количество используемых компонентов.
  • Композитный сайт
    Обязателен к включению в интернет-магазинах.
  • Мониторинг производительности. Вообще этот пункт должен быть первым, но он требует технических навыков. Встроенный инструмент анализа производительности Битрикса — полезная штука. Для быстрого анализа сразу ищем – медленные SQL-запросы, так как база данных всегда самое слабое звено.
  • PHP
    На сервере должна использоваться версия PHP не ниже 7.1. Если такой возможности нет, то хотя бы для 5.6 должны стоят акселераторы на выбор: XCache, eAccelerator, APC.
  • Nginx
    В качестве веб-сервера рекомендуем использовать более производительный сервер Nginx отечественной разработки.

Bitrix ошибка отсутствуют цены

Самая простая и распространная ошибка, которую ошибкой даже тяжело назвать. В Битриксе есть несколько типов цен (Магазин > Настройки > Цены > Типы цен). Удаляете ненужные, в настройках компонента каталога/новинок и других связанных с магазином выставляете нужный тип цены.

Ошибка в типе содержимого bitrix

Ошибка не появляется на ровном месте, значит недавно были правки или вообще переезд на другой сервер. В каком-то из файлов, в результате ошибки php или кодировки файла при сохранении, идет вывод содержимого страницы (текст ошибки это тоже текст) до служебных http-заголовков. Рекомендуем в первую очередь посмотреть недавно отредактированные файлы на предмет кодировки UTF-8 с BOM и сделать UTF-8 без BOM.

Например, так:

grep -rl $'xEFxBBxBF' .

500 ошибка bitrix

Ошибка 500 Internal Server Error или «Белый экран смерти» требует дополнительной диагностики. Для этого и нужен error.log веб-сервера, а также режим отладки самого Битрикс. Чаще всего это синтаксические ошибки в php-файлах или .htaccess, которые легко можно найти по последним записям логов или дате последнего редактирования файлов на сервере.

Не работает сео битрикс

Переключите шаблон компонента на стандартный, чтобы исключить вероятность ошибки в кастомизированном под ваш сайт шаблоне компонента. Проверьте корректность настроек вывода компонента. Для работы с SEO комплексные компоненты, на примере компонента новостей имеют отдельные настройки: SET_META_KEYWORDS, SET_META_DESCRIPTION.

Возможно вам будет интересно

  • Поддержка сайта на 1С-Битрикс
  • Перенос сайта на 1С-Битрикс
  • Модули для 1С-Битрикс

Экономьте свое время — делегируйте работу с Битрикс нам

Сложно? Только не для нас!

Мы оказываем техническую поддержку сайтов на Битрикс с 2010 года. Яндекс официально рекомендует наш модуль для работы с собственным сервисом турбо-страниц.

Бесплатная консультация 8 (800) 350-81-86

В заметке собраны некоторые проблемы с Bitrix Framework и VMBitrix, а так же приведены способы их решения.

Важно: описанные ниже действия потенциально опасные и могут привести к неработоспособности вашего сайта, выполняйте их осознанно на свой страх и риск.

Прежде чем затронуть функциональность сайта не забудьте сделать бэкап.

Как уменьшить размер БД

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

Разросшуюся базу данных можно подчистить. Однако если 1С-Битрикс продолжает необоснованно расти, возможно проблема глубже и выходит за рамки данной статьи.

Как очистить статистику Веб-аналитики

В админке перейдите в Настройки > Настройки продукта > Настройки модулей > Веб-аналитика. В разделе Очистка статистики укажите до какой даты выполнить очистку (если оставить незаполненным, то будет очищена вся статистика) и нажмите кнопку Очистить.

Как удалить записи из Журнала событий

В настройках главного модуля, на вкладке Журнал событий, уменьшите количество дней для хранения событий. Чем меньше дней хранятся записи, тем меньше весит таблица. Дополнительно можно исключить типы событий, которые не нужно записывать в таблицу. База уменьшится не сразу, Битрикс потребуется некоторое время на удаление старых событий.

Более быстрый и радикальный вариант – очистить таблицу b_event_log через SQL-запрос. При этом будут удалены все события!

Если таблица не очень большая, выполните запрос через админку: Настройки > Инструменты > SQL запрос (или на странице you.site/bitrix/admin/sql.php).

DELETE FROM `b_event_log`;

Если таблица огромная (больше 4Гб), то скорее всего запрос не выполнится и отвалится по тайм-ауту. В таком случае выполнить запрос лучше из консоли MySQL на сервере, примерно так:

mysql -h you_sql_server -u root -p

USE you_db_name;

DELETE FROM `b_event_log`;

При большем размере придётся набраться терпения, очистка моей 9 гиговой таблицы заняла около часа.

К слову, поврежденную таблицу можно восстановить командой.

REPAIR table b_event_log;

Как очистить разросшуюся таблицу b_cache_tag

Перейдите в Настройки продукта > Автокэширование > Очистка файлов кэша.

Затем аналогично действиям описанным в предыдущем разделе выполните:

TRUNCATE TABLE b_cache_tag

Где изменить mbstring.internal_encoding и mbstring.func_overload

Значения mbstring.func_overload и mbstring.internal_encoding зависят от вашего сайта, используемой кодировки и проблемы, которую решаете.

Вариант 1 (для Apache и PHP ниже версии 7.3). Установить необходимые значения в файле .htaccess.

php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8

Вариант 2 (так же для PHP ниже версии 7.3). Добавить параметры в файле настройки виртуальных хостов. Для Apache это:

  • /etc/apache2/sites-available/сайт.conf (если использется BitrixVM)
  • /etc/apache2/httpd.conf
  • /etc/apache2/apache2.conf
<VirtualHost *:80>
  ServerAdmin ...
  ServerName ...
  ServerAlias ...
  DocumentRoot "/путь/к/папке/сайта"

  php_admin_value mbstring.func_overload 2
  php_admin_value mbstring.internal_encoding UTF-8
</VirtualHost>

Вариант 3 (для всех версий PHP). Установить необходимые значения в php.ini, для BitrixVM /etc/php.d/z_bx_custom.ini. После внесения изменений нужно перезагрузить сервер.

Начиная с версии PHP 7.3  значение mbstring.func_overload нельзя установить индивидуально для конкретного сайта, ни через .htaccess, ни через конфигурационный файл Apache. Единственный вариант – установить значение mbstring.func_overload непосредственно в файле php.ini. Однако php.ini общий и если на сервере несколько сайтов, то они могут перестать работать, например если часть сайтов работает в кодировке UTF-8, а часть на cp1251.

Смена кодировки Битрикс на UTF8

Для PHP установите следующие параметры.

mbstring.func_overload 2
mbstring.internal_encoding UTF-8

Удалите модули Поиск без сохранения таблиц и Веб-аналитика (без сохранения таблиц, но с сохранением шаблонов сообщений).

Из словаря транслита в модуле Форум (Сервисы > Форумы > Фильтр нецензурных слов > Словарь транслита) удалить букву ё (ID = 7).

В настройках сайта изменить кодировку с windows-1251 на utf-8.

В файле /bitrix/php_interface/dbconn.php установить для константы BX_UTF значение true.

define("BX_UTF", true);

Скачать с сайта 1С-Битрикс скрипт convert_utf8.php, поместить его в корень сайта, затем запустить и дождаться полного выполнения.

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

SELECT CONCAT('ALTER   TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;') as

sqlcode

FROM `information_schema`.`TABLES` t

WHERE 1

AND t.`TABLE_SCHEMA` = 'database_name' ORDER BY 1

Где database_name – имя базы данных сайта.

В результате будет выведен новый запрос, который нужно скопировать и выполнить. По завершении таблицы базы данных будут переведены в кодировку UTF-8.

Далее пропишите в /bitrix/php_interface/after_connect.php:

$DB->Query("SET NAMES 'utf8'");
$DB->Query('SET collation_connection = "utf8_unicode_ci"');

В файл /bitrix/php_interface/after_connect_d7.php:

$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"'); 

В /bitrix/.settings.php:

return array (
  'utf_mode' => 
  array (
    'value' => true,
    'readonly' => true,
  ),

Затем полностью очистите кэш сайта.

Удалите более ненужный скрипт convert_utf8.php.

Заново установите модуль Поиск и сделайте переиндексацию.

Установите модуль Веб-аналитика (если использовали ранее).

Если возникли проблемы с сериализованными массивами возможно сможет помочь скрипт.

Дополнительные сведения на dev.1c-bitrix.ru и тема на форуме.

Если выкидывает из админки Битрикс

После ввода логина и пароля снова открывается страница авторизации

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

Вторая причина – переполнения дискового пространства сервера. Очистите место на диске, удалите лишние бэкапы или докупите место (если это возможно) у своего хостинг-провайдера.

Периодически выкидывает из админки

Такое может происходить если в качестве DNS-сервера используется Cloudflare или аналог, например для использования SSL-сертификатов или защиты от DDoS. В этом случае, сессию обрывает механизм защиты Битрикс. Cloudflare подменяет ip-адрес пользователя и админка пресекает доступ. Для исправления внесите в dbconn.php следующие правки:

$_SERVER["REMOTE_ADDR"] = $_SERVER['HTTP_CF_CONNECTING_IP'];

Однако после окончания работы в админке, лучше вернуть исходные настройки dbconn.php, ради безопастности.

Другой причиной вылетов, может быть наличие лишних символов или пробелов в файлах dbconn.php, after_connect.php, after_connect_d7.php, особенно в начале или в конце файла. Исправьте и проблема должна решиться.

Не отправляется почта

Если перестала отправляться почта на Яндекс

После многих лет пользования Яндекс.Почтой для отправки сообщений от интернет-магазина на Битрикс, почта перестала работать. В логах ошибка:

Sender or From header address rejected: not owned by authorized user

Одна из причин по которой это может произойти: адрес почты, под которой авторизируется сервер, отличается от почты (поле «From», «От кого») указанной на сайте.

Раньше такая схема вполне себе работала на Яндекс. В Битрикс можно было указать почту, например my@company.ru, при том, что сервер отправлял ее с ящика info@yandex.ru. Получатель письма все равно в отправителях видел почту my@company.ru.

Но начиная с 2020 года, Яндекс постепенно запрещает отправку писем если поле «From» отличается от адреса пользователя, с данными которого производится авторизация на сервере.

Решений несколько:

  • указать на сайте почту, под которой происходит авторизация на сервере, что в случае использования почты на Яндекс возможно будет не очень солидным;
  • поднять свой почтовый сервер и настроить отправку с него;
  • арендовать недорогой хостинг, который позволяет отправлять письма даже если поле «From» отличается от адреса пользователя, с данными которого производится авторизация на сервере. Например REG.RU предоставляет такую возможность, подойдет даже самый простой тариф дешевле 100 руб. в мес.

Свою проблему решил, выбрав третий вариант. Рекомендую хостинги:

  • REG.RU (промокод на скидку для заказа домена или хостинга: 2229-CC0A-AC4D-C31B)
  • Hostland (месяц бесплатно)

Логирование почты

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

Добавьте в dbconn.php следующие строки.

// определим константу LOG_FILENAME, в которой зададим путь к лог-файлу
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/mylog-123.txt");

//дебаг почты
function custom_mail($to, $subject, $message, $additional_headers='', $additional_parameters='')
{
   AddMessage2Log(
            'To: '.$to.PHP_EOL.
            'Subject: '.$subject.PHP_EOL.
            'Message: '.$message.PHP_EOL.
            'Headers: '.$additional_headers.PHP_EOL.
            'Params: '.$additional_parameters.PHP_EOL
         );
   if ($additional_parameters!='') {
      return @mail($to, $subject, $message, $additional_headers, $additional_parameters);
   } else {
       return @mail($to, $subject, $message, $additional_headers);
   }
}

Теперь, при отправке письма в лог будут писаться сообщения.

Проблемы с отправкой уведомления о заполнении веб-форм

Для начала проверьте, настройки почтового события заполнения формы и его шаблона. Откройте Панель управления > Настройки > Настройки продукта > Почтовые события > Типы событий и выберите интересующее событие.

На вкладке Тип события, убедитесь, что отмечены галочки возле используемых на сайте кодов языка.

На вкладке Шаблоны должен задан хотя бы один шаблон. Перейдите в шаблон кликнув на его идентификаторе или откройте его из списка шаблонов: Панель управления > Настройки > Настройки продукта > Почтовые события > Почтовые шаблоны.

В настройках выбранного почтового шаблона, должна стоять галочка Активен, и выбран хотя бы один сайт. Также должны быть корректно заполнены поля От кого и Кому (значения по-умолчанию #DEFAULT_EMAIL_FROM# и #EMAIL# соответственно).

Редактирование почтового шаблона

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

Если не помогло, перейдите в Настройки > Инструменты > SQL-запрос и выполните следующий запрос:

select * from b_event where event_name like '%form%' order by date_insert desc

Найдите событие заполнения формы, поле SUCCESS_EXEC:

  • Y – сообщение отправлено, дальнейший его путь сможет определить администратор хостинга или почтового сервера;
  • N – сообщение не отправлено. Проверьте файл /bitrix/php_interface/dbconn.php на наличие констант BX_CRONTAB и BX_CRONTAB_SUPPORT, уберите их если они присутствуют, затем выполните SQL-запрос еще раз. Если и после этого SUCCESS_EXEC равен N, попробуйте очистить кэш /bitrix/managed_cache/.
  • F – функция mail вернула False при отправке. Смотрите логи. Возможно почта на хостинге (сервере) не настроена или настроена некорректно, решается хостером или администратором сервера. Другая причина, почтовый сервер не поддерживает формат письма. Попробуйте изменить настройки отправки в Главном модуле: убрать/поставить галку Дублировать email адрес в заголовке, убрать/поставить галку Конвертировать 8-битные заголовки.
  • 0 (ноль) – не корректные настройки типов событий или в почтовом шаблоне. Проверьте настройки как указано в начале.

Ошибка БД после переноса на другой хостинг

Одна из типичных ошибок после переноса на другой хостинг, например такая:

2016-05-25 15:33:22 - Host: host:80 - UNCAUGHT_EXCEPTION - [Error]
Call to undefined function BitrixMainDBmysql_connect() (0)
/home/bitrix/www/bitrix/modules/main/lib/db/mysqlconnection.php:45
#0: BitrixMainDBMysqlConnection->connectInternal()...

Может быть вызвана сменой СУБД с MySQL на MySQLi или наоборот.

Чтобы исправить нужно перенастроить подключение к БД, отдельно для старого и нового ядра.

В случае с MySQLi

В файле bitrixphp_interfacedbconn.php

define("BX_USE_MYSQLI", true);

В файле bitrix.settings.php поменять класс соединения с базой на MysqliConnection.

'connections' =>
    array (
        'value' =>
        array (
            'default' =>
                array (
                    'className' => 'BitrixMainDBMysqliConnection',
                    'host' => 'localhost',
                    'database' => 'database',
                    'login' => 'login',
                    'password' => '*****',
                ),
        ),
    ),

В случае с MySQL соответственно

В файле bitrixphp_interfacedbconn.php

define("BX_USE_MYSQLI", false)

В файле bitrix.settings.php поменять класс соединения с базой на MysqlConnection.

'connections' =>
    array (
        'value' =>
            array (
            'default' =>
                array (
                    'className' => 'BitrixMainDBMysqlConnection',
...

После изменения настроек, сайт должен заработать.

Ошибка: innodb_strict_mode=ON, требуется OFF

Ошибка может появиться при проверке системы. Для исправления воспользуйтесь одним из двух вариантов.

Вариант 1. Через конфигурационные файлы Битрикс.

В файл /bitrix/php_interface/after_connect.php добавьте сторку:

$DB→Query("SET innodb_strict_mode='OFF'");

В файл /bitrix/php_interface/after_connect_d7.php

$connection→queryExecute("SET innodb_strict_mode='OFF'");

Вариант 2. Через конфигурационные файлы MySQL.

Откройте конфигурационный файл MySQL (три возможных варианта расположения):

  • /etc/my.cnf
  • /etc/alternatives/my.cnf
  • /etc/bitrix-my.cnf

Добавить строку в блоке # InnoDB parameters

innodb_strict_mode = OFF

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

Ошибка: Переменная sql_mode в MySQL должна быть пустая

Ошибка может появиться при проверке системы, когда параметр sql_mode задаёт режим работы MySQL, несовместимый с Битрикс.

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

В файл /bitrix/php_interface/after_connect_d7.php

$connection = BitrixMainApplication::getConnection();
$connection->queryExecute("SET sql_mode=''");

В файл /bitrix/php_interface/after_connect.php

$DB->Query("SET sql_mode=''");

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

Недоступны файлы для чтения и записи

Если при проверке доступа к файлам 1С-Битрикс (Настройки – Инструменты – Проверка сайта – Проверка доступа) появляется ошибка: Недоступны для чтения или записи (показаны первые 10), это значит на сервере неверно настроены права для сайта.

Bitrix Files Access Denied

Причины могут быть разные, чаще это происходит если какие то файлы создавались, распаковывались или перемещались пользователем, к файлам которого 1С-Битрикс не имеет доступа.

Чтобы ошибка исчезла, нужно сделать владельцем файлов и папок пользователя bitrix, а права назначить как 775 для папок и 664 для файлов.

Следующая команда сделает владельцем файлов и папок пользователя bitrix в указанном каталоге (у вас он может быть другим). Как правило это /home/bitrix/www/ для основного сайта и/или /home/bitrix/ext_www/папка_сайта/ для дополнительных.

chown -R bitrix:bitrix /home/bitrix/www/

Ключ -R означает рекурсивно, т.е. включая вложенные папки и файлы.

А следующие команды выставят правильные права на доступ к файлам и папкам.

cd /home/bitrix/www
find . -type d -exec chmod 775 {} ;
find . -type f -exec chmod 664 {} ;
find . -type d -exec chown bitrix:bitrix {} ;
find . -type f -exec chown bitrix:bitrix {} ;

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

На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.

Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.

Понравилась статья? Поделить с друзьями:
  • Ошибка в тиндере а 42901 что это
  • Ошибка в телефоне нет карты памяти
  • Ошибка в тиндере а 42901 что значит
  • Ошибка в телефоне нет картинок
  • Ошибка в тик ток слишком много попыток