К основному содержимому
🐘

PHP

30 статей в разделе

Раздел о PHP как о рабочем окружении на сервере, а не о языке программирования: как устроен PHP-FPM с его пулами и воркерами, зачем нужен OPcache и когда включать JIT, как держать на одной машине несколько версий PHP — 7.4, 8.1, 8.2 — не ломая старые проекты при обновлении.

Отдельные статьи — про инструменты вокруг PHP: Composer и оптимизация автозагрузчика, Xdebug для отладки без потери скорости на проде, очереди с Supervisor для Laravel и Symfony, сессии в Redis, когда сайт работает на нескольких серверах, и Swoole с RoadRunner для долгоживущих процессов вместо классического FPM.

Есть и практические разборы: чем PHP в cron отличается от PHP-FPM, как читать error_log и не путать его с display_errors на проде, зачем strict_types и как безопасно проверять загружаемые файлы, чтобы через них не подсунули веб-шелл.

  • PHP-FPM, OPcache и JIT: настройка под нагрузку
  • Несколько версий PHP и обновление до 8.3/8.4
  • Composer, автозагрузка и Xdebug
  • Laravel и Symfony: деплой, очереди, сессии в Redis
PHP-FPM: пулы, воркеры и оптимизация Настройка PHP-FPM на VPS: конфигурация пулов, pm.max_children, pm dynamic/static/ondemand. Оптимизируйте PHP-FPM для максимальной производительности сайта. PHP OPcache: настройка и оптимизация кэша байт-кода Настройка PHP OPcache на Linux: opcache.memory_consumption, opcache.max_accelerated_files. Ускорьте PHP в 2–10 раз с правильным кэшем байт-кода. Composer: установка и управление зависимостями PHP Установка Composer на Ubuntu/Debian, создание composer.json, команды require/update/install, оптимизация автозагрузчика для production. Установка расширений PHP на Ubuntu и Debian Как установить расширения PHP на Ubuntu и Debian: php-curl, php-gd, php-mbstring, php-xml. Список необходимых расширений для WordPress, Laravel и других CMS. PHP настройка: memory_limit и upload_max_filesize Как изменить memory_limit, upload_max_filesize, post_max_size и max_execution_time в PHP. Настройка через php.ini, .htaccess, .user.ini и ini_set в коде. Laravel на VPS: установка, настройка Nginx и деплой Полная инструкция по установке Laravel на VPS: PHP-FPM, Nginx vhost, .env, php artisan migrate, Supervisor для очередей, cron для scheduler. PHP Security: усиление безопасности через настройки php.ini Настройка безопасного PHP: disable_functions, expose_php, open_basedir, allow_url_fopen, session безопасность. Чеклист безопасности php.ini для production VPS. Несколько версий PHP на одном сервере: 7.4, 8.1, 8.2 Как установить несколько версий PHP на Ubuntu/Debian через ondrej/php PPA: PHP 7.4, 8.1, 8.2 одновременно. Настройка Nginx для разных версий PHP-FPM. PHP автозагрузка: оптимизация Composer autoloader Оптимизация автозагрузчика Composer для production: dump-autoload --optimize, classmap, PSR-4 vs PSR-0. Ускорение Laravel и Symfony в 2–3 раза. PHP OPcache и JIT: настройка для максимальной скорости Полная настройка PHP OPcache и JIT-компилятора для ускорения сайта в 3-5 раз. Параметры opcache.ini, мониторинг, оптимальные значения для продакшена. WebSockets на PHP с Ratchet: чат и уведомления Создание WebSocket-сервера на PHP с библиотекой Ratchet. Настройка чата, push-уведомлений, работа с Nginx reverse proxy и systemd на VPS. PHP 8.3 и 8.4 на сервере: что нового и когда обновляться PHP 8.3 и 8.4: главные изменения, сроки поддержки версий и порядок обновления на сервере без простоя сайта. Xdebug на сервере: отладка и профилирование PHP-кода Xdebug: установка на сервере, настройка step debug в IDE, режим профилирования и почему нельзя включать его на проде. Symfony на VPS: деплой, конфиг Nginx и права на каталоги Symfony на VPS: структура каталогов, конфиг Nginx для public/index.php, права на var/cache и типовые ошибки 502. Очереди PHP и Supervisor: воркеры для Laravel и Symfony Supervisor для очередей PHP: конфиг воркера, автоперезапуск, лимит памяти и разбор частых причин зависших задач. Swoole и RoadRunner: PHP как долгоживущий процесс Swoole и RoadRunner: чем долгоживущий PHP-процесс отличается от FPM, как настроить сервер и на что смотреть при утечках памяти. Сессии PHP в Redis для нескольких серверов Сессии PHP в Redis: как настроить session.save_handler, установить php-redis и не потерять сессии за балансировщиком нагрузки. PHP в cron: чем CLI отличается от FPM на практике PHP в cron: разница между CLI и FPM, свой php.ini, память и таймауты, правильный crontab и логирование вывода задач. Логи PHP: error_log, display_errors и разбор фаталов Логи PHP на практике: где искать error_log, чем display_errors отличается от log_errors и как разобрать типовой фатал по строке лога. strict_types и строгая типизация PHP на проде strict_types в PHP: как declare(strict_types=1) меняет обработку типов, где код ломается и как безопасно включить строгую типизацию на проде. Загрузка файлов на PHP: проверка типа и защита Загрузка файлов на PHP: почему расширение и Content-Type не защита, как проверить тип через finfo и куда сохранять файлы безопасно. Сколько процессов PHP-FPM: расчёт pm.max_children Формула расчёта pm.max_children: бюджет памяти, замер размера процесса, пример для 1-8 GB RAM и типичные ошибки настройки PHP-FPM. Laravel Octane на VDS: когда он даёт выигрыш Laravel Octane на Swoole или RoadRunner: когда бутстрап фреймворка стоит убирать из каждого запроса, сколько воркеров запускать и типичные утечки состояния. Slowlog PHP-FPM: как найти медленные скрипты Как включить slowlog PHP-FPM, прочитать стек-трейс зависшего запроса и отличить медленный код от медленного запроса к базе данных. Fibers в PHP: асинхронный код без расширений Fibers в PHP 8.1: что это, чем отличается от корутин Swoole, минимальный пример start/suspend/resume и где этот механизм реально нужен. Как обновить PHP на Ubuntu и Debian после PHP2Shell Пошаговое обновление PHP на Ubuntu 24.04 и Debian 12 после критических уязвимостей CVE-2026-109618 и CVE-2026-109619, с проверкой результата. Как обновить PHP на AlmaLinux, Rocky и RHEL после PHP2Shell Обновление PHP на AlmaLinux, Rocky Linux и RHEL после CVE-2026-109618 и CVE-2026-109619: модули dnf, репозиторий Remi, проверка результата. Обновление PHP в cPanel, Plesk и ISPmanager после PHP2Shell Как закрыть CVE-2026-109618 и CVE-2026-109619 на серверах с панелями управления cPanel, Plesk и ISPmanager, не сломав сайты клиентов. PHP в Docker: как закрыть PHP2Shell пересборкой образа Обновление PHP в контейнерах после CVE-2026-109618 и CVE-2026-109619: выбор тега, пересборка, проверка и защита от повторения. PHP 8.5: что нового и когда переходить PHP 8.5: оператор конвейера, NoDiscard, clone with. Что ломает код при обновлении и почему 31 декабря 2026 года кончается поддержка ветки 8.2.