Обновление с помощьюHomebrew
Для начала убедитесь что brew установлен крайней версии:
brew update
Теперь уже можно переходить к обновлению PHP. Вы можете использовать встроенные средства PHP, но я рекомендую использовать tap shivammathur/homebrew-php
Стандартное обновление
brew upgrade php
Обновление с помощью shivammathur/homebrew-php
brew tap shivammathur/php
brew install shivammathur/php/php@8.2
Для переключения между версиями используйте следующую команду
brew link --overwrite --force php@8.2
Хотите больше информации о homebrew - посетите следующий репозиторий
Следующие шаги
Проверьте текущую версию при помощиphp -v
NGINX или Apache
ИспользуетеNGINX или Apache? То Вам необходимо перезапустить их (если вы используете Laravel Valet, то просто пропустите этот пункт и перейдите к следующему). Выполняем команды:
sudo nginx -s reload
sudo apachectl restart
И убедитесь, что ваш локальный веб сервер также использует PHP 8.2 прописав следующую команду:
# index.php, accessible to your web server
phpinfo();
Версия должна быть 8.2.Х
Valet
Если вы используете Laravel Valet, вам нужно выполнить следующие шаги для обновления:
composer global update
Вы можете использовать valet use для переключения между версиями PHP
valet use php@8.2
valet use php@8.1
Расширения
Расширения PHP устанавливаются с помощью pecl. Я лично использую Redis и Xdebug. Они могут быть установлены следующим образом:
pecl install redis
pecl install xdebug
Вы можете запустить команду pecl list, чтобы посмотреть какие расширения установлены.
pecl list
# Installed packages, channel pecl.php.net:
# =========================================
# Package Version State
# redis 5.3.4 stable
# xdebug 3.1.1 stable
Вы можете искать другие расширения используяpecl search
pecl search pdf
Убедитесь, что вы перезапустили свой веб сервер после установки каких-либо расширения.
sudo nginx -s reload
sudo apachectl restart
valet restart
Убедитесь, что все расширения правильно установлены и загружены, проверив установки вашего веб-сервера PHP и CLI:
php -i | grep redis
var_dump(extension_loaded('redis'));
Если расширения загружены неправильно, есть два простых решения.
Во-первых, убедитесь, что расширения добавлены в правильный ini-файл. Вы можете запустить php --ini
, чтобы узнать, какой файл загружен:
Configuration File (php.ini) Path: /opt/homebrew/etc/php/8.2
Loaded Configuration File: /opt/homebrew/etc/php/8.2/php.ini
Scan for additional .ini files in: /opt/homebrew/etc/php/8.2/conf.d
Additional .ini files parsed: /opt/homebrew/etc/php/8.2/conf.d/error_log.ini,
/opt/homebrew/etc/php/8.2/conf.d/ext-opcache.ini,
/opt/homebrew/etc/php/8.2/conf.d/php-memory-limits.ini
Теперь проверьте этот файл .ini
extension="redis.so"
zend_extension="xdebug.so"
Обратите внимание, что если вы тестируете установленные расширения через CLI, вам не нужно перезапускать nginx, apache или Valet при внесении изменений в настройки ini.
Второе, что вы можете сделать, если вы обновляетесь с более старой версии PHP, которая также использовала pecl для установки расширения; это переустановить каждое расширение по отдельности.
pecl uninstall redis
pecl install redis
Последний шаг
Наконец, вы должны протестировать и обновить свои проекты для совместимости с PHP 8.2.
Оригинал статьи: https://stitcher.io/blog/php-82-upgrade-mac