Yandex Metrika

Поиск по блогу

Найдите нужную статью о модулях 1С-Битрикс,
настройке и оптимизации

Теги: php ×

Найдено результатов: 50 по тегам php

Рубрика веб-студии о серверном PHP рядом с типовым стеком 1С‑Битрикс

Обзор направления Заметки связывают низкоуровневые приёмы с практической эксплуатацией веб‑проектов: аккуратные обёртки вокруг встроенных классов SPL, понимание таймзоны относительно хранения TIMESTAMP в базе инфоблоков и упаковку артефактов выгрузок. Разбор задачи Использование чистых сниппетов упрощает…

Антибот без видимой капчи: таймер, AJAX и скрытые поля в обработчике формы

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

Рубрика PHP задач каталога для проектов на 1С‑Битрикс

Грань между ядром и проектными сниппетами Материалы рубрики полезнее рассматривать как набор паттернов сопровождения а не замену стандартных API торговли и информационных блоков. Согласование с промышленными стандартами Версионирование PHP на сервере фиксируйте совместно с редакцией ядра и списком критических…

Подписи модулей в административном интерфейсе после PHP 8.1

Жёстче PHP 8.1 к ошибкам и предупреждениям затрагивает отрисовку списков расширений: очищаем административный кеш, переводные данные и просматриваем патчи вне дистрибутива ядра магазина.

Не заходит в админку: белый или чёрный экран на платформе 1С‑Битрикс

Первые шаги наблюдений платформы 1С‑Битрикс Временно включите подробную запись фатальных ошибок в журнал PHP-FPM и проверьте свободный объём на том композита и временных дампов платформы 1С‑Битрикс. Отключите сомнительные агенты и временно изолируйте кастомные подключения из системного входа если симптом появился…

Упаковка каталога в ZIP через ZipArchive сохраняя относительные пути без обхода вне корня

Разбор задачи Открываем архив режим CREATE перебираем файлы RecursiveIteratorIterator и добавляем с префиксом без абсолютных путей. <?php declare(strict_types=1); function packTreeToZip(string $srcDir, string $zipDest): bool { if (!class_exists(ZipArchive::class)) { return false; } $pack = new ZipArchive(); if…

Разность двух календарных дат через DateTimeImmutable и Intl-friendly вывод человекочитаемо

Разбор задачи Создаём два объекта с явной временной зоной проекта затем берём diff и форматируем части интервала аккуратно для пользователя. <?php declare(strict_types=1); $from = new DateTimeImmutable('2026-03-02 09:30', new DateTimeZone('Europe/Moscow')); $to = new DateTimeImmutable('2026-03-05 21:05', new…

Человеко-понятные URL своим обработчиком: единственная точка входа parse_path и whitelist маршрутов

Разбор задачи Ставим простой роутинг до подключения тяжёлых MVC: режем REQUEST_URI пополам по query исключаем статические расширения и отправляем в switch по первому сегменту. <?php declare(strict_types=1); /** @var non-empty-string */ $path = strtok($_SERVER['REQUEST_URI'] ?? '/', '?'); $segments =…

Переход на PHP 8.x в «1С‑Битрикс»: сбор типовых рисков и проверочных шагов

Материалы направления фокусируются на deprecation сигнатурированных вызовов, жёстких типах в коде приложения, обновлениях модулей sale и переходном слое между mysqli и объектной обёрткой драйверов виртуальных машин Bitrix.

Чем API Битрикс подменяет привычные функции PHP

Зачем дублируют стандартный PHP В продакшене Битрикс часто встречается в связке с устаревшими настройками кодировок и окружений. Обёртки ядра стабилизируют поведение между хостингами: меньше сюрпризов при переносе проекта и при разработке модулей, которые должны жить не только на «идеальном» UTF‑8 стенде.…

Bizproc без готовых действий: PHP и собственное действие

Встроенный PHP Для простых задач можно вызвать фрагмент сценария прямо в шаблоне бизнес-процесса: получить объект документа, отфильтровать поля, дернуть AddMessage2Log или отправить почту через API. Такой код сложнее сопровождать, поэтому чуть более серьёзный сценарий переносят в полноценный класс активности. Каркас…

API медиабиблиотеки: CMedialib::Init и работа классов CMedialibCollection и CMedialibItem

Подключение платформы Работа с объектами возможна только после загрузки модуля «Управление структурой» и успешной CMedialib::Init() ; иначе внутренние табличные указатели остаются пустыми. Выбор каталогов Плоский массив отдаёт сортированный метод списком с активностью фильтра. Если нужно дерево родительских связей —…

Сообщение «Прекомпилятор не установлен» в Битрикс: Opcache и путь zend_extension

Что видит администратор В административном разделе или на диагностике производительности появляется текст вроде «Прекомпилятор не установлен», хотя сборка ставилась через «Битрикс: веб‑окружение», где официально рекомендуют Zend OPcache перед устаревшими APC или XCache. Почему так бывает Модуль OPcache уже собран или…

Обрезание POST в PHP: max_input_vars при большой корзине 1С‑Битрикс

При сотнях SKU в одном запросе активация скидок или оформление брошенной корзины может упереться в лимит переменных max_input_vars из bitrixenv.ini; поднимают лимит и перезапускают веб‑сервер.

Смена кодировки данных в D7: \Bitrix\Main\Text\Encoding

Зачем не iconv напрямую В обменах, почтовых заголовках и старых модулях строки часто уже в UTF-8, тогда как в настройках конкретного сайта в многосайтовости задан другой CHARSET. Ядро «1С‑Битрикс» даёт статические методы \Bitrix\Main\Text\Encoding , которые кроме скаляров рекурсивно обходят массивы и переводят и…

Миграция данных MSSQL → MySQL (порциями)

Миграция как последовательное считывание записей порциями (по 100) с переносом связанных данных из других таблиц — пример CLI‑скрипта для Битрикс и устаревшего расширения mssql_* (исторический материал с .ru). Скрипт /** * * Скрипт миграции данных во временную или реальную базу данных под CMS Bitrix * **/…

Обработка исключений битрикса

Материал Обработка исключений, "вброшенных" стандартным классом битрикс "\Bitrix\Main\SystemException". Пример обработки ошибочного преобразования json функцией "\Bitrix\Main\Web\Json::decode": try { $arRes = \Bitrix\Main\Web\Json::decode($result); } catch (\Bitrix\Main\SystemException $e) { $error = true;…

Сниппеты PHPExcel: загрузка книги, формулы, пересчёт и формат чисел

Короткая шпаргалка по легаси PHPExcel в проектах с 1С‑Битрикс: открыть шаблон Excel2007, записать формулу, прочитать вычисленное значение, задать числовой формат и убрать научную нотацию для длинных строк цифр (ИНН и т.п.).

Где в коде объявлена функция PHP: ReflectionFunction в отладке Битрикс

Быстро найти файл и строку объявления любой пользовательской или ядерной функции — через ReflectionFunction; полезно, когда нужно понять переопределения и хуки вокруг типичных вызовов вроде bx_mail.

Интерактивная стилизованная карта Google Maps: точки из PHP и проекты рядом с 1С‑Битрикс

Перепаковка старой связки PHP + HTML‑метки + RequireJS/Google Maps JS API v3 под современную загрузчиком карту и безопасный вывод названий адресов. Тот же сценарий на витринах и лендингах на «1С‑Битрикс»: офисы, ПВЗ, точки партнёров из массива или выборки; кластеры и только одно активное информационное окно.

Координаты по текстовому адресу в PHP: Geocoding API и запись lat/lng в таблицу

Задача и поля в БД В каталогах и справочниках магазинов часто хранят текстовый адрес, а для карты на сайте нужны числовые координаты. Типичная схема в пользовательской таблице ( b_hlbd_* или обычный InnoDB‑таблица рядом с проектом): колонки lat и lng типа числа с достаточной точностью, плюс флаг вроде is_loc_checked…

Извлечь все комментарии из PHP-файла: token_get_all и потоковый ввод

Зачем это вообще В легаси‑коде, агенте или кастомном модуле «1С‑Битрикс» комментарии часто живут дольше, чем живой контекст: там остаются временные объяснения, отключённые куски и PHPDoc, который IDE уже не показывает. Если нужен быстрый снимок «по тексту без исполнения кода», удобнее не регулярками вырезать /* … */…

Подъём с очень старой версии 1С‑Битрикс: лестница PHP, апдейт платформы и переход на mysqli

Кому это актуально Типичный сценарий — давно не обновляемый проект на относительно ранней основе (в оригинальной шпаргалке фигурировала ветка 17 и ниже ): установщик следующего крупного шага отказывается стартовать на слишком старом PHP, а после скачивания обновлений всплывает ещё и отсутствие расширения mysqli ,…

Рекурсивное iconv для массивов: UTF‑8 в проекте на «1С‑Битрикс»

Зачем это рядом с «1С‑Битрикс» Сайт на UTF‑8, а из обмена, старых выгрузок или контура партнёра приходит дерево массивов в Windows‑1251/KOI8. Пакетно прогнать строки через iconv() без ручного обхода уровней — типовая задача агентов импорта и тестовых скриптов с prolog_before.php . Идея заметки с .ru Исходный пример —…

Импорт прайс-листа из Excel: PHPExcel, проверка шапки и обновление цен

Задача Старая заметка с .ru показывала разбор XLS: читать лист, сверить «шапку», пройти строки с номенклатурой и обновить цены и остатки в таблице shop_items . Ниже — тот же каркас, переписанный для реальной эксплуатации рядом с «1С‑Битрикс»: аккуратная работа с формулами в ячейках, валидация строки и отказ от…

Массив $_SERVER: заголовки, строка запроса и контекст PHP для бэкенда

Зачем PHP собирает суперглобальный $_SERVER: как из HTTP-полей получаются ключи HTTP_*, чем отличаются SCRIPT_NAME и PHP_SELF, как читать адрес клиента за балансировщиком и что в CLI нет «вебовых» переменных — кратко для разработчика 1С‑Битрикс.

Монтирование SMB/CIFS из PHP: mount.cifs, файл учётных данных и размонтирование

Как из скрипта на PHP (в т. ч. рядом с кроном или одноразовой утилитой) смонтировать шару Windows/Samba только на время работы: отдельный credentials-файл, вызов mount.cifs, чтение в режиме ro и аккуратный umount при уничтожении объекта.

Экспорт в CSV: карта колонок, конвертеры и потоковая выдача в браузер

Зачем карта полей Учебный пример с жёстко прошитыми ключами массива быстро превращается в копипасту: при добавлении поля правят и SQL, и шапку, и тело строки. Удобнее держать карту колонок : из базы берём сырой набор полей, а заголовки CSV и преобразования значений описываем один раз в конфигурации — по аналогии с…

Почему PHPUnit «моргает»: flaky-тесты и что с этим делать в PHP-проекте

Что такое flaky-тест Иногда один и тот же тест проходит не с первого раза: один прогон зелёный, следующий — нет, или падает каждый N‑й запуск. Такие сценарии называют flaky (нестабильными). Проблема не в «капризном» PHPUnit, а в скрытом состоянии окружения, общих ресурсах или порядке выполнения. Ниже — причины, с…

Рефакторинг по методу «heavy clay»: вынести «плохой» код в отдельный файл и довести до методов

Тактика для наследия без тестов: проблемный процедурный кусок копируют в `origin.php` и `modify.php`, переключают флагом, явно помечают входы и выходы, затем превращают включение в методы класса — контроль через запуск всего приложения, а не через изолированные юнит-тесты.

Рефакторинг через «TODO‑маркеры»: исключения вместо полной переписки кода

Тактика для больших правок в 1С‑Битрикс: вместо мгновенной переработки всего механизма помечайте реальные точки входа в старый код исключениями с текстом вроде TODO — по стеку видно, какой сценарий действительно срабатывает, и что чинить в первую очередь.

Быстрый поиск файла класса и метода через Reflection API в PHP

Зачем это в работе с 1С‑Битрикс В большом проекте классы разбросаны по /local/php_interface/ , модулям, составным автозагрузкам и vendor. Когда нужно понять, откуда берётся поведение компонента, сервиса или ORM‑сущности, первый шаг — хотя бы знать файл объявления . Reflection API встроен в PHP и не требует grep по…

IPv4 в INT, INSERT из массива и array_reduce в задачах 1С‑Битрикс

Зачем это в проекте на «1С‑Битрикс» В кастомных таблицах голосований, антифрода, логов посещений и интеграций тот же PHP и тот же MySQL, что и у ядра. Ниже — переработанные приёмы из раздела «Решения PHP»: без копипасты устаревшего кода, с акцентом на то, что важно бэкенд‑разработчику на битриксовом стеке. IPv4 как…

Отдача файла на скачивание в PHP: заголовки, readfile и безопасный путь

Зачем отдельный скрипт В проекте на «1С‑Битрикс» часто нужно отдать счёт, выгрузку или вложение так, чтобы вкладка не открыла PDF «как страницу», а предложила сохранить файл. Для этого достаточно пары заголовков и потокового чтения с диска; важнее не ошибиться с путём и не превратить обработчик в «лазейку» по…

Защита сайта на Битрикс от взлома: сканер, типовые вредоносные приёмы в PHP и что проверять

Зачем это Битрикс-разработчику Сайт на «1С-Битрикс» — это PHP, файловая система, веб-сервер и база. Типовые векторы взлома те же, что и у любого приложения на PHP: загрузка или подмена скриптов, слабые пароли, устаревшие дополнения и ошибки в кастомном коде. Ниже — сжатая выжимка из подборки «Защита от взлома» с…

PHPExcel в 1С‑Битрикс при mbstring.func_overload=2: вынос генерации XLS в отдельный PHP‑CLI

Зачем вообще CLI, если всё уже на сервере На типичной установке «1С‑Битрикс» в php.ini может стоять mbstring.func_overload = 2 : так рекомендует документация продукта, чтобы однобайтовые функции вели себя предсказуемо в UTF‑8. Библиотека PHPExcel (и часть легаси‑кода вокруг неё) написана под классическую модель строк…

Сюрпризы PHP для бэкенда на 1С‑Битрикс: параметры, float, инкременты и сериализация

Почему на актуальном PHP не скомпилируется функция с дублирующимися именами аргументов, что даёт пара постфиксных ++ в одном присваивании, как двоичные float ломают сравнение с целым, чему равно !(-1) и зачем осторожно с unserialize при смене видимости свойств.

PHP в cron на UNIX: строка расписания, полный путь к интерпретатору и минимальный prolog_before для Битрикс

Введение cron в UNIX-системах — фоновый планировщик: он по расписанию запускает команды от имени пользователя. На хостинге часто действуют лимиты на число задач и минимальный интервал; при работе по SSH мы оперируем личным crontab этого пользователя. Формат одной строки Типичная запись содержит шесть частей ,…

Легаси-автозагрузка: CModule и php_interface

С чего начался пример Старый текст на свёл идею к одному блоку без пояснений: вызвать CModule::AddAutoloadClasses и передать карту имён классов и путей к PHP‑файлам. Ниже — переписанная выжимка для реальных боевых проектов под Bitrix без копирования чужих формулировок подряд. Что именно делает вызов PHP подключает…

Сессии в PHP и Битрикс «ломаются»: нет места на диске и быстрая диагностика

Если на каждый запрос меняется bitrix_sessid(), AJAX жалуется на неверную сессию, а в админке вы всё ещё авторизуетесь до первых «плавающих» ошибок — проверьте, сохраняется ли PHP-сессия на файловую систему. Частый сюрприз: место или inode закончились, запись блокируется без явного намёка в интерфейсе.

Установка Pinba server на CentOS 6: плагин MySQL и настройка

Pinba собирает профили PHP-запросов в реальном времени: на сервере это движок хранения для MySQL. Ниже — сборка pinba_engine из исходников под ту же версию MySQL, что стоит на хосте, установка плагина и минимальная конфигурация.

Установка Sphinx Search на Debian и Ubuntu: пакет движка, PECL и сборка libsphinxclient

Классический сценарий для проектов, где до сих пор тянется Sphinx как внешний полнотекстовый движок: ставим sphinxsearch из репозитория, подключаем PHP-расширение через PECL и при ошибке про заголовки libsphinxclient собираем клиентскую библиотеку из исходников и чиним типичный фейл сборки sock_close.