Рубрика Keengo о серверном PHP рядом с типовым стеком 1С‑Битрикс
Материалы про маршрутизацию, работу со временем, архивацию и простую фильтрацию спама через обычный PHP перед подключением тяжёлых MVC.
Найдите нужную статью о модулях 1С-Битрикс,
настройке и оптимизации
Найдено результатов: 50 по тегам php
Материалы про маршрутизацию, работу со временем, архивацию и простую фильтрацию спама через обычный PHP перед подключением тяжёлых MVC.
Снижаем автосабмиты простыми проверками на стороне PHP и AJAX вместо картинки с символами, не ломая UX.
Откуда брать задачи утилитарной PHP поддержки когда ядро магазина обновили и нужно сохранять инвариант окружения публичной части и фоновых агентов.
Жёстче PHP 8.1 к ошибкам и предупреждениям затрагивает отрисовку списков расширений: очищаем административный кеш, переводные данные и просматриваем патчи вне дистрибутива ядра магазина.
Журнал php-fpm свободный диск кеш операционный код временные каталоги несовместимое расширение интерпретатора: типовой порядок выяснения причины перед эскалацией в поддержку.
Перед выдачей проверить открыто ли расширение zip у PHP и отменить сборку если размер временного каталога слишком велик для RAM диска.
Учитываем часовой пояс параметров и отсутствие отрицательных интервалов если старт после конца.
Совместимость с уже существующим urlrewrite Bitrix сохраняем неизменением корневых правил index.php fallback.
При доработке сайта зачастую нужно проверить какую-либо информацию, но при этом, нельзя чтобы все посетители видели это.
Материалы направления фокусируются на deprecation сигнатурированных вызовов, жёстких типах в коде приложения, обновлениях модулей sale и переходном слое между mysqli и объектной обёрткой драйверов виртуальных машин Bitrix.
LAMP-профиль установки, short_open_tag, лимиты post/upload/input_vars и mbstring, SSH и простые виртуальные хосты.
max_execution_time, таймауты proxy_* в Nginx и отдельно — клиентские лимиты при тестах из браузера.
htmlEncode вместо htmlspecialchars, Json::encode для AJAX, нормализация регистра строк с кириллицей.
Проще не спорить со стартовым экраном админ‑панели: положите в /bitrix/php_interface/ небольшой PHP‑вывод телефона, тикета и понятных SLA.
Когда «PHP-кода» недостаточно, выносим логику в отдельное действие: структура каталогов activity, класс, наследование CBPActivity.
Подключение fileman, инициализация медиалиба, фильтры коллекций, рекурсивное дерево, правка набора элементов через CFile::MakeFileArray и множественная привязка к нескольким коллекциям.
В веб‑окружении Zend OPcache уже ожидается, но PHP не находит opcache.so; часто достаточно явно указать путь расширения в ini и проверить значения параметров из типового профиля.
При сотнях SKU в одном запросе активация скидок или оформление брошенной корзины может упереться в лимит переменных max_input_vars из bitrixenv.ini; поднимают лимит и перезапускают веб‑сервер.
Как перевести массив полей или строку из UTF-8 в кодировку сайта через \Bitrix\Main\Text\Encoding::convertEncoding, зачем указывать LANG_CHARSET и когда уместен convertEncodingToCurrent для входящих данных.
Обработка исключений, "вброшенных" стандартным классом битрикс "\Bitrix\Main\SystemException".
Пример обработки ошибочного преобразования json функцией "\Bitrix\Main\Web\Json::decode":
Короткая шпаргалка по легаси PHPExcel в проектах с 1С‑Битрикс: открыть шаблон Excel2007, записать формулу, прочитать вычисленное значение, задать числовой формат и убрать научную нотацию для длинных строк цифр (ИНН и т.п.).
Быстро найти файл и строку объявления любой пользовательской или ядерной функции — через ReflectionFunction; полезно, когда нужно понять переопределения и хуки вокруг типичных вызовов вроде bx_mail.
Перепаковка старой связки PHP + HTML‑метки + RequireJS/Google Maps JS API v3 под современную загрузчиком карту и безопасный вывод названий адресов. Тот же сценарий на витринах и лендингах на «1С‑Битрикс»: офисы, ПВЗ, точки партнёров из массива или выборки; кластеры и только одно активное информационное окно.
Разбор задачи из старых заметок: пройти по строкам базы с адресами, получить широту и долготу через геокодер и сохранить в поля таблицы. Переводим идею на современный HTTPS‑API с ключом, таймаутами и аккуратной записью координат — в том же духе, что и крон‑скрипты рядом с «1С‑Битрикс».
Как за минуты собрать однострочные и блоковые комментарии из исходника на PHP через лексический разбор ядром: token_get_all, stdin и практический разбор ограничений для инвентаризации легаси рядом с 1С‑Битрикс.
На «замороженных» инсталляциях с веткой продукта порядка 17.x обновление упирается не только в файлы ядра, но и в версию PHP и драйвер БД. Ниже — пошаговая лестница: поднять интерпретатор до совместимого минимума, прогнать обновление платформы, включить mysqli и довести систему до актуальных пакетов — с бэкапом и проверкой на копии.
Как рекурсивно перевести вложенный массив из одной кодировки в другую: обход ключей и строк, суффиксы //IGNORE и //TRANSLIT, вынос iconv в отдельную функцию и вариант уровня через array_map — в контексте импорта и UTF‑8 сайта на 1С‑Битрикс.
Скелет импорта XLS/XLSX: PHPExcel или PhpSpreadsheet, контроль ячейки формата, обход строк с номенклатурой и SKU, чтение вычисленных значений из формул, обновление цен и остатков без небезопасного SQL — в контексте типового проекта на 1С‑Битрикс.
Зачем PHP собирает суперглобальный $_SERVER: как из HTTP-полей получаются ключи HTTP_*, чем отличаются SCRIPT_NAME и PHP_SELF, как читать адрес клиента за балансировщиком и что в CLI нет «вебовых» переменных — кратко для разработчика 1С‑Битрикс.
Как из скрипта на PHP (в т. ч. рядом с кроном или одноразовой утилитой) смонтировать шару Windows/Samba только на время работы: отдельный credentials-файл, вызов mount.cifs, чтение в режиме ro и аккуратный umount при уничтожении объекта.
Тест иногда зелёный, иногда красный — классика нестабильных (flaky) сценариев. Разбор типичных причин в PHPUnit на фоне Laravel и кастомного PHP вроде 1С‑Битрикс: гонки по данным, фейковое хранилище, провайдеры данных, отложенное завершение и сравнение времени.
Тактика для наследия без тестов: проблемный процедурный кусок копируют в `origin.php` и `modify.php`, переключают флагом, явно помечают входы и выходы, затем превращают включение в методы класса — контроль через запуск всего приложения, а не через изолированные юнит-тесты.
Тактика для больших правок в 1С‑Битрикс: вместо мгновенной переработки всего механизма помечаетте реальные точки входа в старый код исключениями с текстом вроде TODO — по стеку видно, какой сценарий действительно срабатывает, и что чинить в первую очередь.
Как без IDE за секунды узнать путь к файлу, в котором объявлен класс или метод в проекте на PHP: ReflectionClass и ReflectionMethod, учёт пространств имён и оговорки про трейты, наследование и кеш opcache.
Как без сюрпризов хранить IPv4 в числовом поле, выводить его как беззнаковое, вставлять строку через INET_ATON и собирать INSERT из ассоциативного массива через array_map; плюс разбор array_reduce на примере сбора идентификаторов разделов.
Как отдать бинарник браузеру без лишнего HTML в ответе: корректные заголовки, размер тела, readfile и почему нельзя собирать путь к файлу напрямую из query без проверки — с учётом типичных сценариев вокруг 1С‑Битрикс.
Сводка по материалам о защите PHP-проектов, переложенная на «1С-Битрикс»: неявный вызов кода во вредоносных скриптах, бесплатный сканер AI-Bolit по хостингу, инструменты проверки и осведомлённость про XSS. Где искать следы компрометации в дереве сайта.
Когда в веб‑процессе включена перегрузка строк mbstring, старый PHPExcel часто падает в том же запросе, что и ядро Битрикс. Надёжный обходной путь — отдельный интерпретатор PHP в CLI с «чистым» mbstring и передачей таблицы через временный файл.
Почему на актуальном PHP не скомпилируется функция с дублирующимися именами аргументов, что даёт пара постфиксных ++ в одном присваивании, как двоичные float ломают сравнение с целым, чему равно !(-1) и зачем осторожно с unserialize при смене видимости свойств.
Как составить строку crontab, почему в задании лучше писать /usr/bin/php, а не «голый» php, как совпасть с версией и настройками веб-среды и безопасно подключить ядро сайта через prolog_before в фоновом сценарии.
Разбор минимального приёма из статьи PushOrigin про CModule::AddAutoloadClasses: куда положить файлы под /local/php_interface/classes, почему путь абсолютный от корня сайта и как литера в ключе массива ломает загрузку класса.
Если на каждый запрос меняется bitrix_sessid(), AJAX жалуется на неверную сессию, а в админке вы всё ещё авторизуетесь до первых «плавающих» ошибок — проверьте, сохраняется ли PHP-сессия на файловую систему. Частый сюрприз: место или inode закончились, запись блокируется без явного намёка в интерфейсе.
Pinba собирает профили PHP-запросов в реальном времени: на сервере это движок хранения для MySQL. Ниже — сборка pinba_engine из исходников под ту же версию MySQL, что стоит на хосте, установка плагина и минимальная конфигурация.
Классический сценарий для проектов, где до сих пор тянется Sphinx как внешний полнотекстовый движок: ставим sphinxsearch из репозитория, подключаем PHP-расширение через PECL и при ошибке про заголовки libsphinxclient собираем клиентскую библиотеку из исходников и чиним типичный фейл сборки sock_close.