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

PHP

21 статей у розділі

Розділ про 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 і куди зберігати файли безпечно.