使用 Homebrew 升级

首先确保 brew 是最新的:

brew update

接下来,升级PHP。您可以使用内置的 php 配方,但我建议使用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

您可以在存储库中阅读更多内容。

#下一步

通过运行检查当前版本php -v

php -v

重启 NginxApache,如果你使用的是 Laravel Valet,你可以跳到下一节;您需要一些额外的步骤才能使 Web 服务器正常工作。

sudo nginx -s reload
sudo apachectl restart

并通过访问此脚本确保您的本地 Web 服务器也使用 PHP 8.2:

# index.php, accessible to your web server

phpinfo();

版本应该显示8.2.x

 

 

 

#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

# Retrieving data...0%
# ..
# Matched packages, channel pecl.php.net:
# =======================================
# Package Stable/(Latest) Local
# pdflib  4.1.4 (stable)        Creating PDF on the fly with the PDFlib library

确保在安装新包后重新启动 Web 服务器:

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 测试已安装的扩展,则在更改 ini 设置时无需重新启动 nginx、apache 或 Valet。

你可以做的第二件事,如果你是从一个旧的 PHP 版本更新,它也使用 pecl 安装扩展;是单独重新安装每个扩展。

pecl uninstall redis
pecl install redis

#最后一步

最后,您应该测试和升级您的项目以实现PHP 8.2 兼容性

在 Mac 上使用 Homebrew 升级到 PHP 8.2
标签: