Лишний вывод в файлах конфигурации ошибка не работает
Файл "dbconn.php"
- $DBType - тип базы данных. Если сайт находится на виртуальном хостинге, то скорее всего это MySQL.
- $DBHost - хост, оно же ip адрес сервера, на котором находится база данных.
- $DBLogin - логин к базе данных.
- $DBPassword - пароль к базе данных.
- $DBName - имя базы данных.
"Хост" - это ip адрес сервера, на котором работает база данных. Если база данных работает на том же сервере, что и сайт, то вместо ip адреса можно написать слово localhost (или ip адрес 127.0.0.1, что по сути одно и то же).
Все эти настройки можно спросить у техподдержки хостинга после заказа услуги. Мы всегда поможем настроить сайт, поэтому не стесняйтесь писать в техподдержку!
Рекомендуем к прочтению
Размер стека и pcre.recursion_limit
Уведомление: Замечание: Возможны проблемы в работе с длинными строками из за системных ограничений
Это замечание некритично и, как правило, на работе сайтов не сказывается, однако оно может влиять на обработку очень длинного текста, например, если в нем сотни тысяч символов.
Этот параметр влияет на возможность обработки строк регулярными выражениями. Лимит по умолчанию установлен достаточно большой, чтобы можно было обработать практически любой контент на сайте, но для устранения замечания можно дополнительно внести изменения.
Решение:
5 комментариев
Если белый экран вознинкает после переноса. То мне помогл закоментить настройки memcached в файле .setting_extra.php
Спасибо добрый человек!
Помогли ответить на вопрос:
ob_start(): Cannot use output buffering in output buffering display handlers (0)
видимо произошло обновление файла php.ini, может вместе с обновлением php — что там было раньше сказать трудно но если начнете делать бекапы, то все будет лучше.
Дальше — пошла ошибка подключения к базе. Проверил сервер базы — все ок. Значит не подключается сокет. Пошел в php.ini и там прописал сокеты и хост
1124 mysqli.default_socket = /var/lib/mysqld/mysqld.sock ;add sock @kuryaev
1128 mysqli.default_host = 127.0.0.1 ;add 127.0.0.1 @kuryaev
1132 mysqli.default_user = bitrix0 ;add bitrix0 @kuryaev
Потом подрихтовал переменные на предмет корректных требований bitrix24
12 @ini_set("memory_limit", "512M"); //add M char @kuryaev — тут поставил явно мегабайты, их небыло
/etc/php.ini | grep kuryaev
402 max_input_vars = 10000; add max_input_vars = 10000 @kuryaev — тут увеличил с 1000 до 10000, требование битрикс24.
Собственно этого хватило.
Всем привет.
Понадобилось изучить Битрикс для поддержки корпоративного сайта. Скачал VMWare машину, запустил, победил ошибку «Удалите устаревший параметр mbstring.func_overload», обновив и саму виртуалку, и PHP.
Однако, после запуска и успешной установки, регулярно получаю этот пресловутый белый лист.
Почитал эту статью, отредактировал файлы, дабы включить ведение логов.
Файла /bitrix/php_interface/init.php в папке вообще нет. Насколько это критично?
Проверить настройку PHP — short_open_tag, которая должна быть в On. — где это можно сделать?
Спасибо
Здравствуйте, Александр, попробуйте создать /bitrix/php_interface/init.php
short_open_tag это настройка в конфиге php на вашей машине.
на убунту например надо тут искать /etc/php/7.4/ (поменяйтие 7.4
на версию php , которую используете)
Методы выявление ошибки
1. В файле .htaccess включаем вывод ошибок:
2. В файле /bitrix/php_interface/dbconn.php :
3. Смотреть лог ошибок (error log) веб-сервера (апач, файл error_log ).
4. В файле /bitrix/.settings.php установить
5. Проверить содержимое переменной $_SERVER["DOCUMENT_ROOT"] . Там должен быть установлен корректный путь, иначе не подключаются файлы системы.
6. Запустить скрипт проверки системы на соответствия требованиям для стабильной работы 1с Битрикс bitrix_server_test.php
Выполнение агентов на cron
Уведомление: Замечание: Агенты выполняются на хитах, рекомендуется перенести их выполнение на cron
Это замечание некритично. В Битрикс предусмотрен внутренний планировщик задач (агентов). Данное замечание влияет на то, насколько точно по времени сработают запланированные задачи. Грубо говоря, скрипты сайта выполняются, только когда его страницы кто-то посещает. Если нет посещений, то и таймер работать не будет. Cron позволяет полностью решить проблему с планированием задач.
Решение:
Чтобы перенести работу непериодических агентов (и передачу почты) на Сron, необходимо установить константу BX_CRONTAB_SUPPORT .
Для этого добавьте в файл /public_html/bitrix/php_interface/dbconn.php строку:
1. В разделе Crontab нажмите «Добавить новую задачу» и задайте удобное имя для задачи.
2. В пункте «Исполнитель» выберите «Исполняемый бинарный файл».
3. В пункте «Путь до файла» укажите команду следующего вида:
4. В пункте «Периодичность» выберите «Каждую минуту».
Уведомление: Ошибка! Не настроен запуск cron_events.php на cron
Эта ошибка может возникнуть, если в пункте выше вы только добавили константу, но не добавили задачу cron. Без настройки задачи в crontab будет остановлена часть агентов, в том числе с сайта перестанет отправляться почта. Письма будут накапливаться в очередь и отправляться по частям после устранения ошибки.
Решение:
Выполните приведенную выше инструкцию по добавлению задачи cron, и ошибка будет устранена.
Обязательные параметры PHP
Уведомление: Ошибка! Значение max_input_vars должно быть не ниже 10000
Эта ошибка не влияет на работоспособность сайта напрямую, но может отразиться на работе с большими формами в административной панели. При работе с инфоблоками низкое значение параметра max_input_vars может вызвать проблемы с сохранением настроек, поэтому система выделяет эту ошибку как критическую.
Люди помогите, пожалуйста.
Перенес сайт на сервер, загрузил обновления и исходники, затем проверку сайта. все норм кроме этого.
Лишний вывод в файлах конфигурацииподробнее
Ошибка
нажал "подробнее" показалось вот что
Проверяется вывод текста в файлах конфигурации: dbconn.php и init.php .
Даже пробел или перенос строки может приводить к тому, что с включенной компрессией страница не сможет распаковаться на стороне браузера и будет нечитаема.
Также могут возникнуть проблемы с авторизацией или в работе CAPTCHA.
Что делать и с каким файлом?
они оба есть, сравнивал содержимое файлов с локальным сайтом (бэкап с которого ставил на серваке), - идентичны.
какие строки именно посмотреть нужно?
Возможно на локальной машине файлы прокатывают, а на серве уже нет?
Проверяйте на наличие вывода пустых строк в файле. Обычно это лишние строки в начале или конце файла, за пределами тегов
оба начанаются с
а пробелы типа:
" ххххх
Цитата |
---|
ХаусСерж пишет: Даже пробел или перенос строки может приводить к тому, что с включенной компрессией страница не сможет распаковаться на стороне браузера и будет нечитаема. |
Я с php не работал раньше, вроде пробелы, какие нашел, поубирал.
сам init.php выглядит вот так:
/*Version 0.3 2011-04-25*/
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "BXIBlockAfterSave");
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "BXIBlockAfterSave");
AddEventHandler("catalog", "OnPriceAdd", "BXIBlockAfterSave");
AddEventHandler("catalog", "OnPriceUpdate", "BXIBlockAfterSave");
function BXIBlockAfterSave($arg1, $arg2 = false)
$ELEMENT_ID = false;
$IBLOCK_ID = false;
$OFFERS_IBLOCK_ID = false;
$OFFERS_PROPERTY_ID = false;
//Check for catalog event
if(is_array($arg2) && $arg2["PRODUCT_ID"] > 0)
//Get iblock element
$rsPriceElement = CIBlockElement::GetList(
array(),
array("ID" => $arg2["PRODUCT_ID"],
),
false,
false,
array("ID", "IBLOCK_ID")
);
if($arPriceElement = $rsPriceElement->Fetch())
$arCatalog = CCatalog::GetByID($arPriceElement["IBLOCK_ID"]);
if(is_array($arCatalog))
//Check if it is offers iblock
if($arCatalog["OFFERS"] == "Y")
//Find product element
$rsElement = CIBlockElement::GetProperty(
$arPriceElement["IBLOCK_ID"],
$arPriceElement["ID"],
"sort",
"asc",
array("ID" => $arCatalog["SKU_PROPERTY_ID"])
);
$arElement = $rsElement->Fetch();
if($arElement && $arElement["VALUE"] > 0)
$ELEMENT_ID = $arElement["VALUE"];
$IBLOCK_ID = $arCatalog["PRODUCT_IBLOCK_ID"];
$OFFERS_IBLOCK_ID = $arCatalog["IBLOCK_ID"];
$OFFERS_PROPERTY_ID = $arCatalog["SKU_PROPERTY_ID"];
>
>
//or iblock wich has offers
elseif($arCatalog["OFFERS_IBLOCK_ID"] > 0)
$ELEMENT_ID = $arPriceElement["ID"];
$IBLOCK_ID = $arPriceElement["IBLOCK_ID"];
$OFFERS_IBLOCK_ID = $arCatalog["OFFERS_IBLOCK_ID"];
$OFFERS_PROPERTY_ID = $arCatalog["OFFERS_PROPERTY_ID"];
>
//or it's regular catalog
else
$ELEMENT_ID = $arPriceElement["ID"];
$IBLOCK_ID = $arPriceElement["IBLOCK_ID"];
$OFFERS_IBLOCK_ID = false;
$OFFERS_PROPERTY_ID = false;
>
>
>
>
//Check for iblock event
elseif(is_array($arg1) && $arg1["ID"] > 0 && $arg1["IBLOCK_ID"] > 0)
//Check if iblock has offers
$arOffers = CIBlockPriceTools::GetOffersIBlock($arg1["IBLOCK_ID"]);
if(is_array($arOffers))
$ELEMENT_ID = $arg1["ID"];
$IBLOCK_ID = $arg1["IBLOCK_ID"];
$OFFERS_IBLOCK_ID = $arOffers["OFFERS_IBLOCK_ID"];
$OFFERS_PROPERTY_ID = $arOffers["OFFERS_PROPERTY_ID"];
>
>
if($ELEMENT_ID)
static $arPropCache = array();
if(!array_key_exists($IBLOCK_ID, $arPropCache))
//Check for MINIMAL_PRICE property
$rsProperty = CIBlockProperty::GetByID("MINIMUM_PRICE", $IBLOCK_ID);
$arProperty = $rsProperty->Fetch();
if($arProperty)
$arPropCache[$IBLOCK_ID] = $arProperty["ID"];
else
$arPropCache[$IBLOCK_ID] = false;
>
if($arPropCache[$IBLOCK_ID])
//Compose elements filter
$arProductID = array($ELEMENT_ID);
if($OFFERS_IBLOCK_ID)
$rsOffers = CIBlockElement::GetList(
array(),
array(
"IBLOCK_ID" => $OFFERS_IBLOCK_ID,
"PROPERTY_".$OFFERS_PROPERTY_ID => $ELEMENT_ID,
),
false,
false,
array("ID")
);
while($arOffer = $rsOffers->Fetch())
$arProductID[] = $arOffer["ID"];
>
$minPrice = false;
$maxPrice = false;
//Get prices
$rsPrices = CPrice::GetList(
array(),
array(
"BASE" => "Y",
"PRODUCT_ID" => $arProductID,
)
);
while($arPrice = $rsPrices->Fetch())
$PRICE = $arPrice["PRICE"];
if($minPrice === false || $minPrice > $PRICE)
$minPrice = $PRICE;
if($maxPrice === false || $maxPrice < $PRICE)
$maxPrice = $PRICE;
>
//Save found minimal price into property
if($minPrice !== false)
CIBlockElement::SetPropertyValuesEx(
$ELEMENT_ID,
$IBLOCK_ID,
array(
"MINIMUM_PRICE" => $minPrice,
"MAXIMUM_PRICE" => $maxPrice,
)
);
>
>
>
>
?>
Всем привет!
Удаляю элемент, выдает такую ошибку. У меня такое впервые, может у кого было такое? Как решить?
Сделал показ ошибок, там от куда я скрин приложил ничего не выдало.
При сохранении элемента в других инфоблоках сейчас более подробную ошибку выдает.
Я думаю что эти ошибки взаимосвязаны так как они появились в 1 время.
mills, Ошибка связана с базой данных "Mysql query error", что показывает проверка системы в настройках битрикс в инструментах?
Вы хостинг проверяли скриптом проверки битрикс на совместимость требованиям битрикс?
Сохранение или удаление элементов делаете в публичной части сайта или в админке?
Удаление, изменение делаем в админке. Хостинг timeweb, до этого момента сайт существовал на этом хостинге долгое время. У меня догадки почему база данных поломалась, видимо из за не хватки места, сейчас мы увеличили место, но ошибка осталась.
При проверке, вот что выдало у базы данных:
mills, вам же пишет ошибку, возьмите исправьте, либо восстановите сайт из бекапа если есть. У хостинга есть автоматические бекапы.
mills, у битрикса же есть исправление структуры базы данных (инструменты->диагностика->Оптимизация БД). Попробуй может? Заранее резервную копию только сделай
mills, b_search_content_stem и b_search_content_freq - относятся к модулю поиска если я не ошибаюсь, попробуй переустановить модуль поиска и выполни переиндексацию после установки.
Maxim Kirshin, Удалил поиск, установил заного, ошибка при проверке системы ушла. Но ошибка при сохранении элемента или удаление элемента осталась.
Maxim Kirshin,
Вот щас все ок..
mills, модули с маркетплейса не ставили? Пробуйте удалить по очереди все модули с маркетплейса.
Установите все самые актуальные обновления битрикс
Ярослав Александров,
Вот что стоит:
mills, причин ошибки может быть много и уже видно что проблема явно выходит за рамки тостера. Есть два пути, восстановиться из бекапа, или нанять специалиста, который проведёт обследование и решит проблему.
Ярослав Александров, ТП битрикса написали "Пожалуйста, обратитсь к администратору сервера или хостинга, где располагается сайт, для проверки настроек GTID на сервере MySQL."
Сайт уже сколько лет на этом хостинге и все ок было, щас какая то проблема.
Может ли эта проблема быть из за нехватки места на хостинге? Было нехватка места, щас все ок. И во время того как не хватало места создавались сертификаты я думаю что это могло послужить этому всему.
mills, хостинг это сервер, а сервер обслуживается хостингом, на нём есть набор ПО, которое обновляется. MySQL это составная часть ПО сервера. От качества услуг хостинга напрямую зависит работоспособность сайта, любого. У хостинга есть поддержка, вам туда. Если поддержка не может решить проблему с хостингом, меняйте хостинг.
П.С. Пять лет назад я меня была новая машина (сайт), а сегодня у неё сломался двигатель (т.е. MySQL). Что нужно чтобы машина поехала снова?
Битрикс - это довольно возрастная система, первая коммерческая версия которой вышла в 2003 году. Со временем Битрикс быстро менялся, появлялись новые функции и способы программирования. Поэтому появилась такая ситуация, при которой в битриксе оказалось несколько конфигурационных файлов. Из-за желания поддержки обратной совместимости, разработчики пока не удаляют старый способ хранения настроек. Один из них "dbconn.php", а второй "settings.php". В этих файлах записывается данные для входа в базу и другие настройки сайта. Разберём их отдельно.
Режим работы MySQL
Уведомление: Ошибка! innodb_strict_mode=ON, требуется OFF. Переменная sql_mode в MySQL должна быть пустая, текущее значение: NO_ENGINE_SUBSTITUTION
Эта ошибка критична. Она может привести к блокировке запросов к базе данных, что практически означает остановку работы сайта.
Решение:
Необходимо внести изменения в файлы конфигурации Bitrix, в которых задаются параметры базы данных, и указать в них нужные значения. Отредактировать файлы можно, например, с помощью Файлового менеджера.
В файл /public_html/bitrix/php_interface/after_connect.php под уже имеющимися строками и до символов ?> добавьте:
В файл /public_html/bitrix/php_interface/after_connect_d7.php под уже имеющимися строками и до символов ?> добавьте:
После этого проверка Bitrix пройдет успешно.
Отправка почты
Уведомление: Ошибка! Не работает
Эта ошибка возникает, если вы используете хостинг на тестовом периоде — до оплаты услуги почта недоступна. Как только хостинг будет оплачен, почта заработает.
Файл "settings.php"
- className - имя класса, с помощью которого происходит работа с конкретным типом базы данных. Обратите внимание, что при установленном на сервере расширении mysqli можно указать "MysqliConnection". Тогда будет использоваться расширение mysqli.
- host - хост, оно же ip адрес сервера, на котором находится база данных.
- login - логин к базе данных.
- password - пароль к базе данных.
- database - имя базы данных.
Значения параметров подключения к базе в файлах "dbconn.php" и "settings.php" должны совпадать, иначе система будет вести себя непредсказуемо. Поэтому при переносе сайта с одного хостинга на другой стоит убедиться, что в обоих файлах указаны верные доступы к базе данных.
Порой на сайте разработанном на 1с Битрикс вместо контента появляется белый экран. Были случаи появления чистого экрана после авторизации в админке.
Основные причины появления белого экрана
- Кривое редактирование /bitrix/php_interface/init.php : ошибки, лишний пробел после ?>
- Такая же проблема с белым экраном возникла после переноса на другой сервер.
- Проверить настройку PHP — short_open_tag , которая должна быть в On.
- Не хватает оперативной памяти( memory_limit по умолчанию 128). Проблема решается следующим образом. Заходим в /bitrix/php_interface/dbconn.php . Редактируем ini_set("memory_limit", "512M");
Если вы сталкивались с этой проблемой пишите в комментариях, как её решили.
Читайте также: