Мини-гайд: как добавить логирование в Symfony через Docker + Alloy → Loki → Grafana

Tg banner 2025 11 20 23 29 57

В этом мини-гайде мы поднимем локальный стек логирования (Alloy → Loki → Grafana) и настроим отправку JSON-логов из Symfony. Всё запускается через Docker Compose, занимает около 10 минут и полностью повторяемо. В проекте использую свежую версию Symfony webapp: Эта статья — первая из цикла статей по настройке логирования и мониторинга. 1. Настройка логов Symfony (JSON … Читать далее

Запуск встроенного PHP сервера в проекте на Symfony

В консольной утилите Symfony есть встроенный сервер для локальной разработки. Но что, если у тебя не установлена эта утилита? Не беда, можно запустить встроенный в PHP сервер! Делается это командой php -S с флагом -t для указания root-директории.

7 фактов о тестах: как тестирование экономит время и силы разработчика и команды

Tg banner 2025 10 09 20 08 51

Пролог Чтобы статья была поживее, начну со своего опыта НЕ_тестирования, тебе ведь нравится читать как коллеги тупят по 20 с лишним лет? 😉 Начал я программировать, когда мне было лет 7–9, точно уже не помню.Первым языком, ещё в школе, был BASIC — помню, как мы в DOS рисовали какие-то геометрические фигуры.Потом (уже осознанно) пришёл Perl, … Читать далее

301 Редирект через .htaccess (для одной страницы)

Ой давно я не работал с Apache серсером, shared-хостингами и .htaccess… Но жизнь как всегда вносит свои коррективы, и мне потребовалось сделать пару 301 редиректов через этот прекрасный файл. Итак, самый простой редирект для одной страницы: Слева откуда перенаправляем, справа — куда. Вариант чуть сложнее: RewriteCond + RewriteRule это очень гибкая парочка и именно через … Читать далее

Полезная команда GIT: archive

Как заархивировать репозиторий или отдельную ветку? Очень просто! В Гит есть встроенная возможность создать архив! Для этой цели служит команда git archive. У команды есть несколько важных и полезных опций. format — формат архива: tar, zip, tar.gz, tgz Далее указываем или HEAD, имя ветки или тега, который помещаем в архив. Также выходной файл можно задать … Читать далее

Ошибка при выполнении composer update — curl error 28 while downloading: SSL connection timeout

На некоторых проектах (хостингах) при запуске PHP приложения в среде docker-compose появляется ошибка: Для решения необходимо синхронизировать MTU у сетевого адаптера Докера и в конфиге docker-compose.yml Текущий MTU сетевого адаптера можно посмотреть в выводе команды ifconfig В выводе ищем строку с Докером: Значение MTU из этой строки подставляем в конфиг сети докера в docker-compose.yml

Апгрейд Symfony (минорная версия, 7.1.10 до 7.2.*)

Обновление фреймворка В одном из проектов потребовалось обновить версию Symfony. Ну не то чтобы потребовалось, просто дебаг-панель показала, что моя версия устарела 🙂 Для обновления минорной версии необходимо обновить в composer.json версии пакетов, связанных с Symfony (начинаются с symfony/). Но обновлять необходимо только те пакеты, версия которых совпадает с текущей версией установленного фреймворка. Это связанно … Читать далее

SQL: Использование DISTINCT вне SELECT

По работе столкнулся с необходимостью выполнить хитрую выборку с группировкой из БД. И долго не мог обнаружить решение 🙂 Есть таблица со статусами заказов status, в ней всего 3 столбца: id, order_id, status_id. Статусы могут повторяться в рамках одного заказа (см. таблицу). Задача: выбрать все заказы у которых установлены несколько каких-либо статусов (и установлены именно … Читать далее

Пустой GIT коммит

Недавно (по вселенским меркам) узнал, что есть возможность сделать пустой коммит. Как раз то, чего мне очень хотелось при старте проекта. Создаёшь пустой проект, делаешь первый пустой коммит, а потом уже файлы, каталоги, фреймворк и вот это вот всё. Итак, это можно сделать благодаря флагу —allow-empty Для начала проекта: Затем делаем пустой коммит: И вот … Читать далее

Что добавить в .gitignore

Кажется, сегодня про GIT знают все, ну или хотя бы слышали. Эта система контроля версий сегодня заслуженно самая популярная. О самом ГИТе поговорим в другой раз, а сегодня — про один из важных файлов, в котором можно указывать какие файлы должны попасть в индекс системы, а какие нужно проигнорировать. В лучших программистских традициях он так … Читать далее