Перейти к содержимому
Технологии IT обновлён 06.09.2023

PHP Academy

PHP Academy — канал для изучения языка программирования PHP. Получите знания и навыки, которые помогут вам развиваться в этой сфере. Присоединяйтесь!

Публикации канала

Ещё одна уязвимость в PHP, в редких конфигурациях позволяющая удалённо выполнить код Разработчики проекта PHP предупредили о выявлении ещё одной уязвимости (CVE-2026-115560), которая потенциально может использоваться для удалённого выполнения кода на сервере при определённом редком сочетании нестандартных настроек (не в конфигурации по умолчанию) и выполняемого PHP-кода. Подробности о уязвимости намерены опубликовать после готовности очередных корректирующих выпусков PHP. Полный текст: https://opennet.ru/66534/ https://opennet.me/66534/

Открыть в Telegram

Для уязвимостей PHP2Shell анонсирован первый эксплоит, обходящий рандомизацию адресов Исследователи из компании VulnCheck заявили о получении первого эксплоита для уязвимости PHP2Shell (CVE-2026-109618б), обходящего механизм рандомизации адресов (ASLR) на системах x86-64 с типовой конфигурацией PHP. Эксплоит позволяет атаковать системы с PHP 8.4.10-8.4.26 в конфигурации по умолчанию. Ранее трудность определения раскладки памяти в модуле mod_php мешала реализации эксплоита, позволяющего добиться выполнения кода на реальных системах. Для обхода ASLR в эксплоите задействована утечка информации об адресах в коде отображения информации об ошибках. Полный текст: https://opennet.ru/66529/ https://opennet.me/66529/

Открыть в Telegram

Forwarded From ✔️ В PHP устранили критическую уязвимость, найденную ИИ-моделями ИБ-специалисты в программе Patch the Planet нашли серьёзную брешь в кодовой базе PHP, задевающую все популярные CMS, которая существовала более десяти лет. На момент публикации команда PHP выпустила экстренные обновления безопасности. На устранение ушло два месяца и пять этапов согласований между мейнтейнерами языка, Calif, Wiz, Cloudflare, CISA и Белым домом, и OpenAI предлагает закрепить эту схему типовым регламентом для раскрытия найденных ИИ проблем безопасности. Разработчикам и администраторам советуют проверить серверы, для аудита запущенных установок PHP на GitHub выложен диагностический инструмент. openai.com ✔️ ElevenLabs выпустила сквозную голосовую модель Eleven Realtime Модель ведёт двусторонний разговор в реальном времени и вышла в версиях Mini для простых сценариев и Max для сложных диалогов с вызовом инструментов. Заявлена поддержка больше 90 языков и каталог на 17 тысяч голосов. Перебивания, паузы и наложение голосов модель разбирает сама, так что отдельные модели распознавания и синтеза речи не нужны. В бенчмарке Artificial Analysis старшая Max дала точность рассуждений 98,8% при средней задержке ответа 0,57 секунды, тогда как Qwen Audio 3.0 Realtime Plus набрала близкие 99,2%, но отвечала за 1,54 секунды. Доступ открыт через ElevenAgents и Realtime API, причём транспортный уровень совместим со спецификацией WebSocket от OpenAI, поэтому готовые клиентские SDK работают без переписывания кода. elevenlabs.io ✔️ Intel и AMD упростят разработку ИИ на процессорах x86 Компании договорились свести наработки по ускорению PyTorch в открытую библиотеку глубокого обучения oneDNN, которую развивают под эгидой Unified Acceleration Foundation. Так они рассчитывают убрать разнобой в программной части экосистемы x86, а саму oneDNN признали библиотекой по умолчанию для оптимизации ИИ-задач на процессорах обоих производителей. AMD уже переносит наработки из ZenDNN в кодовую базу oneDNN и входит в управляющий комитет. Кроме унификации нынешних средств компании проектируют набор инструкций следующего поколения AI Compute Extensions для аппаратного ускорения матричного умножения, его поддержку в PyTorch тоже обещают через oneDNN.  intel.com ✔️ Google и PyTorch открыли код TorchTPU Набор инструментов для запуска конвейеров PyTorch на тензорных процессорах опубликован в открытом доступе, и это переводит TPU в разряд полноправных ускорителей наравне с процессорами и видеокартами. Существующий код запускается с минимальными правками, разработчикам доступны режим отладки, компиляция и примитивы распределённых вычислений. Инициативу поддержали ключевые проекты открытого ИИ - в transformers добавили выгрузку моделей, а движки vLLM и SGLang получили бэкенды для TPU с непрерывной пакетной обработкой и ядрами Pallas.  google.com ✔️ Uber чистит свои репозитории от мёртвого кода агентами Внутренняя платформа AutoClean непрерывно убирает устаревшие фича-флаги и мёртвый код, с её помощью уже вычищено 16 тысяч флагов и больше миллиона строк. Агент разбирает контекст и цепочки вызовов, а точечную булеву алгебру и упрощение условий отдаёт движку PolyglotPiranha через протокол MCP, упавшие в CI тесты правят агенты без прав на продуктовый код. Готовые патчи проходят многоступенчатую проверку, где параллельные агенты смотрят, сохранена ли семантика программы, держится ли фокус строго на целевом флаге и нет ли посторонних правок. При расхождениях патч отбрасывается сам, а прошедшие проверку задачи уходят инженерам на окончательное утверждение.  uber.com @ai_machinelearning_big_data #news #ai #ml Video is too big

Открыть в Telegram

Уязвимость в PHP, потенциально позволяющая скомпрометировать любой PHP-сайт Разработчики PHP анонсировали публикации сегодня в 17:00 (MSK) экстренных корректирующих выпусков (8.5.12, 8.4.27, 8.3.36 и 8.2.35), в которых будут устранены две критические уязвимости. Всем администраторам серверов с PHP рекомендовано незамедлительно установить исправления на своих системах, сразу после их появления. Официально детали будут раскрыты только после появления исправлений, но судя по появившейся в открытом доступе информации, речь про уязвимости CVE-2026-109618 и CVE-2026-109619, потенциально позволяющие удалённо выполнить свой код на любом сервере, выполняющем PHP-скрипты. Проблема проявляется во всех версиях, начиная с PHP 5.4. Полный текст: https://opennet.ru/66516/ https://opennet.me/66516/

Открыть в Telegram

💡 Совет для Laravel‑разработчиков Используйте Crypt facade — он уже есть в Laravel: - Работает на вашем APP_KEY - Шифрует данные через AES‑256‑CBC - Защищает от подделки (MAC) 🔐 Храните API‑токены, пароли и секреты безопасно — прямо из коробки.

Открыть в Telegram

💡 Совет для Laravel‑разработчиков Используйте Crypt facade — он уже есть в Laravel: - Работает на вашем APP_KEY - Шифрует данные через AES‑256‑CBC - Защищает от подделки (MAC) 🔐 Храните API‑токены, пароли и секреты безопасно — прямо из коробки.

Открыть в Telegram

🤖 ИИ-агенты заходят непосредственно в workflow разработки как цифровые сотрудники В SourceCraft агент получает задачу прямо из GitLab и работает с ней как отдельный участник команды: выполняет поручение под собственной учётной записью и отправляет результат на code review. Причём workflow не обрывается, если контекста недостаточно. Агент может сам запросить у разработчиков дополнительные данные или согласование и продолжить работу после ответа. Для команд также доступно подключение собственных агентов — в том числе созданных в Yandex AI Studio.

Открыть в Telegram

🐘 Что нового в PHP 8.6 Релиз запланирован на 19 ноября 2026 года, сейчас версия проходит бета-тестирование. Из интересного: * Частичное применение функций — можно заранее передать часть аргументов, оставив остальные на потом: $makeSlug = str_replace(' ', '-', ?); echo $makeSlug('Hello World'); // Hello-World * `clamp()` — ограничивает значение заданным диапазоном. Например, clamp(150, min: 0, max: 100) вернёт 100. * `Time\Duration` — класс для длительности с наносекундной точностью, арифметикой и сравнением. * Значения по умолчанию для `readonly`-свойств — без возможности менять их после инициализации. * Новый Polling API — единый интерфейс к механизмам вроде epoll и kqueue для циклов событий. * Улучшенная обработка ошибок потоков — можно выбирать предупреждения, исключения или тихий режим. Разбор с примерами — https://laravel-news.com/php-8-6 RFC частичного применения — https://wiki.php.net/rfc/partial_function_application_v2 Laravel News What's New in PHP 8.6 PHP 8.6 arrives November 19, 2026 with partial function application, a clamp() function, a Duration class, readonly property defaults, and new deprecations.

Открыть в Telegram

💡Совет по Laravel Знаешь ли ты, что можно выбрасывать исключения условно всего в одну строку с помощью throw_if() — идеально для лаконичного кода в контроллерах и сервисах.

Открыть в Telegram

Сегодня хочу рассказать вам про одну ошибку, которую я часто встречаю у начинающих PHP-разработчиков — неправильную работу с датами и временем. Когда вы используете функции вроде date(), strtotime(), time() напрямую без явной установки временной зоны (timezone), ваш код может начать вести себя непредсказуемо. Особенно если ваш проект запущен на серверах в разных регионах. Чтобы избежать проблем: - Всегда задавайте временную зону явно через date_default_timezone_set('Your/Timezone'); в начале вашего приложения. - Или лучше используйте объекты DateTime и DateTimeZone, они гораздо удобнее для работы с временными зонами и манипуляциями с датами. Пример хорошего подхода: $date = new DateTime('now', new DateTimeZone('Europe/Moscow')); echo $date->format('Y-m-d H:i:s'); И еще одна рекомендация — всегда храните даты в базе данных в формате UTC, а уже при выводе преобразовывайте их в нужную временную зону для пользователя. Небольшая дисциплина в работе с временем сэкономит вам кучу нервов в будущем. Проверено на реальных проектах!

Открыть в Telegram

🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_1001_notes Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: https://t.me/+S4hinvO3QI43ZjNi Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.

Открыть в Telegram

Сегодня я покажу вам, как удобно логировать в Laravel, не засоряя код и не превращая проект в болото из Log::info() на каждом шагу. 💡 Используем каналы логирования правильно Laravel предоставляет мощную систему логирования на базе Monolog. Но часто мы ограничиваемся дефолтным логом. А зря. Например, создаём отдельный канал для логов оплаты: // config/logging.php 'channels' => [ 'payment' => [ 'driver' => 'single', 'path' => storage_path('logs/payment.log'), 'level' => 'info', ], ], Теперь в нужном месте можно писать: Log::channel('payment')->info('Платёж прошёл', ['user_id' => $user->id, 'amount' => $amount]); И всё — никакой путаницы. В laravel.log остаётся только то, что важно для всего проекта, а логи оплаты — отдельно. Можно и в телеграм скидывать, если настроить webhook. 👀 Бонус: helper-функция Чтобы писать меньше: if (!function_exists('payment_log')) { function payment_log($message, array $context = []) { \Log::channel('payment')->info($message, $context); } } Теперь вызываем везде просто payment_log('Платёж принят'). Пишите в комментах, какие каналы логирования вы используете и куда пишете — в файл, телегу или Sentry?

Открыть в Telegram

Сегодня я покажу вам простой, но мощный способ, как ускорить отладку в Laravel при работе с большим количеством логики в контроллерах и сервисах. 🔍 Ловим баги быстрее с помощью ray() от Spatie Обычно мы используем dd() или dump() в Laravel, чтобы посмотреть, что творится с переменными. Но как только проект становится крупнее — эти методы начинают мешать, особенно когда нужно отслеживать несколько значений в разных местах. Спасает Ray — инструмент от Spatie, который интегрируется с Laravel и выводит отладочную информацию в отдельное десктопное приложение. Пример: ray($user); ray($order)->blue(); ray()->showQueries(); Ты можешь: - выводить переменные без прерывания скрипта; - смотреть SQL-запросы в реальном времени; - использовать цветовые метки, чтобы различать вывод из разных участков кода. ⚙️ Установка composer require spatie/laravel-ray --dev И по желанию установить десктоп-приложение с сайта Spatie. В config/ray.php можно кастомизировать поведение: включать Ray только на dev-среде, логировать только определённые запросы и т.д. 🧠 Совет от себя Ray особенно хорошо заходит, когда работаешь в команде — ты можешь добавить временный ray()-лог, не ломая исполнение и не мешая другим.

Открыть в Telegram

Есть возможность поработать на Кипре в одной из самых крупных фантех компаний с говорящим названием — Stripchat 😏 Нанимают senior-инженеров в направлениях: Backend, Frontend и QA. Как вы понимаете, продукт востребованный, с миллионами активных пользователей. Задачи: проектирование сервисов, масштабирование платформы, решение ежедневных хайлоад-задач. 200k+ RPS, распределённые системы, event-driven архитектура (PHP, Go). Обещают полную релокацию на Кипр, EU-контракт, жилье на первое время. Узнать детали и откликнуться можно тут stripchat-offer.work Build the platform behind a Top-50 global website Build products for millions, solve complex engineering challenges, and grow with a team that ships fast.

Открыть в Telegram

Сегодня покажу вам простой, но очень удобный приём, который помогает наводить порядок в больших PHP-проектах — использование кастомных коллекций вместо массивов. Если вы когда-нибудь передавали в методы или возвращали из них массивы с объектами, то наверняка сталкивались с ситуацией, когда непонятно, что в массиве лежит. А потом кто-нибудь передал туда строку или null — и привет, баги. Я стал использовать свои классы коллекций. Простой пример: class UserCollection { /** @var User[] */ private array $users = []; public function __construct(array $users = []) { foreach ($users as $user) { $this->add($user); } } public function add(User $user): void { $this->users[] = $user; } public function all(): array { return $this->users; } public function filterByActive(): self { return new self(array_filter($this->users, fn(User $u) => $u->isActive())); } // и так далее } Теперь везде, где раньше был User[], я работаю с UserCollection. Это сразу даёт: - типизацию (и защиту от мусора), - автодополнение в IDE, - методы прямо в коллекции (например, filterByActive, sortByName, first() и т.д.), - чище и понятнее сигнатуры методов. Это похоже на коллекции из Laravel, но я использую это везде, даже в маленьких проектах без фреймворков. Такие объекты делают код чище, устойчивее и легче читаемым. Попробуйте в одном из ваших проектов заменить массивы объектов на такие коллекции — и вы удивитесь, как стало лучше.

Открыть в Telegram

Сегодня покажу вам простую, но мощную технику, которая может прокачать ваш PHP-код — Value Object вместо простых типов. Мы часто передаём параметры как string, int, array. Всё просто и понятно. Но как только бизнес-логика усложняется — типы начинают нас подводить. Допустим, у вас есть метод: function sendSms(string $phoneNumber, string $message): void А теперь скажите честно — сколько раз вы ловили себя на том, что phoneNumber передаётся в неправильном формате? Или вовсе пустым? Или из другой страны, а вы это не предусмотрели? Вот тут и приходят на помощь Value Object'ы: final class PhoneNumber { public function __construct(private string $number) { if (!preg_match('/^\+7\d{10}$/', $number)) { throw new InvalidArgumentException('Invalid phone number'); } } public function value(): string { return $this->number; } } Теперь ваш метод будет выглядеть так: function sendSms(PhoneNumber $phoneNumber, Message $message): void Что мы получаем: - Валидность данных гарантируется на этапе создания объекта. - Код становится самодокументируемым — не нужно читать описание, чтобы понять, что именно сюда передаётся. - IDE и статическая проверка типа не дадут случайно передать email вместо phone. Да, это чуть больше кода. Но это тот случай, когда "больше" — значит надёжнее.

Открыть в Telegram

🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку В IT прокачивается тот, кто каждый день видит сильные идеи, новые инструменты, реальные задачи, вакансии и разборы. Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: t.me/DevopsDocker Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_1001_notes Java: t.me/java_library JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: t.me/fizmat Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: @courses ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд. Пока кто-то листает шум, ты будешь видеть инструменты, задачи и идеи, которые помогают расти в профессии.

Открыть в Telegram

🔥 Как избежать проблем с isset() и empty() в PHP? Сегодня разберём две часто используемые функции в PHP — isset() и empty(), которые могут вести себя не так, как вы ожидаете. 📌 isset() Функция isset($var) проверяет, была ли переменная установлена и не равна ли она null. ❗ Пример подвоха: $var = null; var_dump(isset($var)); // false Если переменной вообще нет в коде — тоже будет false. 📌 empty() Функция empty($var) проверяет, считается ли переменная "пустой". ❗ Пустыми считаются: - "" (пустая строка) - 0 (число) - "0" (строка с нулём) - null - false - [] (пустой массив) Пример: $var = "0"; var_dump(empty($var)); // true, хотя строка не null ⚠️ Ошибка: проверка if (!isset($var) || empty($var)) может привести к неожиданному результату. 🔥 Лучший подход? Используйте строгие проверки: if ($var === null) { /* Переменная null */ } if ($var === '') { /* Пустая строка */ } if ($var === 0) { /* Число 0 */ } Если проверяете массивы, то: if (count($var) === 0) { /* Массив пуст */ } Вывод: не злоупотребляйте isset() и empty(), а проверяйте переменные строго!

Открыть в Telegram

⚙️ Phiki Phiki помогает подсветить синтаксис. Написан на PHP. Он использует файлы грамматики TextMate и темы Visual Studio Code для генерации кода с подсветкой синтаксиса для веба. Название и публичный API Phiki во многом вдохновлены Shiki — пакетом, который делает примерно то же самое в экосистеме JavaScript. Реализация пакета также во многом вдохновлена vscode-textmate — мощным пакетом, лежащим в основе Visual Studio Code, Shiki и других инструментов. 🔗 Github

Открыть в Telegram

Комментарии

0

Комментарии пишут вошедшие — так видно, кто автор.

Войти

Комментариев пока нет

Будьте первым, кто расскажет о канале другим.

Пожаловаться на канал

Расскажите, что не так: модератор проверит канал и примет решение. Подпись не нужна, но почту можно оставить — тогда ответим.

Причина Что не так (необязательно) Почта для ответа (необязательно)
Открыть в Telegram