До основного вмісту
🐘

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. Повний посібник з Composer для PHP на VPS. Встановлення розширень PHP на Ubuntu та Debian Як встановити розширення PHP на Ubuntu та Debian: php-curl, php-gd, php-mbstring. Список необхідних розширень для 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. Laravel на VPS: встановлення, Nginx та деплой Повна інструкція з встановлення Laravel на VPS: PHP-FPM, Nginx vhost, .env, php artisan migrate, Supervisor для черг. Деплой Laravel production. PHP Security: посилення безпеки через налаштування php.ini Налаштування безпечного PHP: disable_functions, expose_php, open_basedir, allow_url_fopen. Чекліст безпеки 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.