У цьому розборі йдеться про підхід автора Ayesh Karunaratne до встановлення й оновлення PHP 8.3 на macOS через Homebrew з використанням tap'ів від Shivam Mathur. Матеріал корисний тим, хто вже має PHP через Homebrew, і тим, хто ставить PHP на чисту систему.

1. Швидкий старт для нової установки PHP 8.3
Якщо Homebrew вже встановлено і вам просто потрібно швидко отримати PHP 8.3 в терміналі як основну версію, достатньо кількох команд. Автор пропонує такий мінімальний набір дій:
# Add the PHP and PHP Extension taps
brew tap shivammathur/php
brew tap shivammathur/extensions
# Install PHP 8.3
brew install shivammathur/php/[email protected]
# Link PHP 8.3 CLI executable as `php`
brew link --overwrite --force shivammathur/php/[email protected]
# Test installation
php -v
- перші дві команди додають до Homebrew два tap'и з пакетами PHP та розширень;
brew install shivammathur/php/[email protected]ставить PHP 8.3 з попередньо зібраними бінарними пакетами (bottles);brew link --overwrite --force ...робить так, щоб у терміналі командаphpвела саме на PHP 8.3;php -vдозволяє переконатися, що активна правильна версія.
Цього достатньо для базового CLI-сценарію. Якщо ж ви оновлюєте існуючу інсталяцію або маєте пов'язаний вебсервер, варто пройтися по детальних кроках нижче.
2. Підготовка: що потрібно перед оновленням
Авторка описує процес, протестований на macOS Monterey, Ventura та Sonoma. Обов'язкова умова — встановлений Homebrew (офіційний сайт).
Для роботи з PHP 8.3 використовуються два tap'и, які підтримує Shivam Mathur:
shivammathur/php— сам PHP (різні версії);shivammathur/extensions— додаткові PECL та core-розширення.
Саме ці tap'и містять актуальні попередньо зібрані пакети PHP 8.3 для macOS, тому їх додавання до Homebrew — ключовий елемент методу.
2.1. Фіксація поточних PHP-пакетів при оновленні
Коли система вже має PHP через Homebrew, важливо не втратити набір розширень після переходу на 8.3. Команда з матеріалу виводить весь список brew-пакетів, фільтрує їх за PHP та пов'язаними розширеннями і зберігає у файл packages.txt:
brew list --full-name | grep -E "php|shivammathur/extensions" | tee packages.txt
Цей список можна використати пізніше як «шпаргалку», щоб відновити знайомий набір розширень, але вже для PHP 8.3. На чистій системі, де PHP ще не було, цей крок зайвий.
3. Додавання tap'ів Shivam Mathur у Homebrew
Наступний крок — підключити додаткові репозиторії Homebrew, де лежать потрібні пакети PHP та розширень:
brew tap shivammathur/php
brew tap shivammathur/extensions
Після цього в системі стають доступними формули виду shivammathur/php/[email protected] та shivammathur/extensions/.... Це окремі від core Homebrew пакети, тому core-версія php (якщо встановлена) не конфліктує до моменту примусового link.
4. Встановлення і активація PHP 8.3
Коли tap'и додані, основна інсталяція складається з двох команд:
brew install shivammathur/php/[email protected]
brew link --force --overwrite shivammathur/php/[email protected]
brew install [email protected]ставить PHP 8.3 з набором core-розширень, визначеним формулою;brew link --force --overwrite ...підмінює посиланняphp(і пов'язані бінарники) на версію 8.3.
Автор окремо наголошує: склад розширень, вбудованих у цей збірник PHP, змінити без перекомпіляції не можна. Якщо потрібні додаткові модулі, доведеться ставити їх окремо з tap'у shivammathur/extensions.
5. Установка додаткових розширень PHP 8.3
Для більшості популярних PECL-розширень у tap'і shivammathur/extensions є окремі формули під конкретну версію PHP. Це спрощує установку: не потрібно компілювати з вихідних чи запускати pecl install.
Приклад з матеріалу — установка Xdebug для PHP 8.3:
Повний перелік підтримуваних розширень автор радить дивитися в README репозиторію: https://github.com/shivammathur/homebrew-extensions?tab=readme-ov-file#extensions.
У статті наведено кілька популярних варіантів для PHP 8.3:
| Розширення | Формула Homebrew |
|---|---|
| Xdebug | shivammathur/extensions/[email protected] |
| APCu | shivammathur/extensions/[email protected] |
| IMAP | shivammathur/extensions/[email protected] |
| PCOV | shivammathur/extensions/[email protected] |
| Redis | shivammathur/extensions/[email protected] |
| Swoole | shivammathur/extensions/[email protected] |
| YAML | shivammathur/extensions/[email protected] |
На практиці для кожного проєкту корисно співставити цей список із тим, що було зафіксовано у packages.txt, щоб відновити потрібний набір модулів.
6. Інтеграція з вебсервером і перезапуск служб
Якщо PHP використовується не лише з CLI, а й як PHP-FPM або модуль під вебсервером, після оновлення до 8.3 потрібно перезавантажити відповідний сервер, щоб він почав працювати з новою версією PHP.
Автор подає базові команди для популярних варіантів:
- Apache, встановлений через Homebrew:
brew services restart httpd; - Nginx через Homebrew:
brew services restart nginx; - Caddy:
caddy reload.
У конкретних конфігураціях може знадобитися перевірити шляхи до сокета PHP-FPM чи порту, але це вже залежить від вашого httpd.conf або конфігурацій Nginx/Caddy. Стаття не деталізує цей аспект і фокусується саме на стороні PHP та Homebrew.
7. Перевірка версії PHP 8.3
Після встановлення і перезапуску сервісів важливо переконатися, що в системі активна саме нова версія PHP. Для цього автор використовує просту перевірку:
- у терміналі викликається
php -v; - вивід має містити версію 8.3 та дату збірки.

Якщо тут бачите іншу версію, варто перевірити, чи не залишились у $PATH старі бінарники, і чи успішно відпрацювала команда brew link --overwrite --force.
8. Міграція конфігурації на PHP 8.3
Для тих, хто переходить з попередньої гілки (наприклад, з 8.1 чи 8.2), автор окремо пояснює, як працювати з конфігураційними файлами.
- Конфіг (INI та пов'язані файли) для PHP 8.3 через Homebrew розташований у каталозі
/opt/homebrew/etc/php/8.3; - інші встановлені версії PHP також лежать у
/opt/homebrew/etc/phpз власними підкаталогами.
Ключова рекомендація автора — не копіювати старі INI-файли цілком у директорію 8.3. Навіть якщо перехід йде з близької версії (наприклад, 8.2), краще переносити опції вручну:
- відкривати старий INI-файл;
- перевіряти потрібні вам директиви;
- по одній переносити їх у відповідний INI для 8.3, перевіряючи, чи вони не застарілі, а синтаксис не змінився.
Пояснення такої обережності — у PHP 8.3 з'являються нові INI-директиви та зникають (deprecate або видаляються) деякі старі. Актуальний перелік змін автор пропонує дивитися в огляді версії: https://php.watch/versions/8.3. Це дозволяє уникнути проблем із запуском через невідомі директиви або змінений формат.
9. Видалення старих версій PHP
Після того як PHP 8.3 працює стабільно, можна очистити систему від попередніх версій. Автор розділяє два сценарії залежно від того, звідки бралася стара версія PHP.
9.1. Якщо PHP встановлено з core Homebrew
У цьому випадку видалення виглядає як стандартний brew uninstall з ім'ям пакета та версією. У статті наведений приклад для 8.2:
Тут [email protected] — формула з основного репозиторію Homebrew (не з tap'у Shivam Mathur).
9.2. Якщо PHP поставлено через tap shivammathur/php
Для раніше встановлених версій PHP із цього tap'у використовують повне ім'я формули. Приклад для видалення PHP 8.1:
Аналогічно можна видалити й інші старі версії. У результаті в системі залишиться лише актуальний PHP 8.3, а директорії на кшталт /opt/homebrew/etc/php/8.1 можна буде почистити, якщо вони більше не потрібні (перед цим варто переконатися, що звідти нічого важливого не використовується).
10. Куди рухатися далі
Для тих, хто працює не тільки на macOS, авторка дає посилання на аналогічні гіди для інших дистрибутивів Linux:
- інсталяція/оновлення PHP 8.3 на Fedora/RHEL/CentOS тощо;
- інсталяція/оновлення PHP 8.3 на Ubuntu та Debian.
Усі ці матеріали доповнюють один одного: підхід із фіксацією пакунків, обережною міграцією INI й очищенням старих версій залишається подібним, а конкретні команди та шляхи адаптуються під платформу.
Джерело: Ayesh Karunaratne — PHP.Watch: статьи