PHP 8.0 重大版本更新于 11 月 26 日正式开放下载,新版本引入了可选的 JIT 编译器,将现有的 JSON 支持集成到核心(不再是可选),并增加了对属性、联合类型,静态返回类型和其他附加语言的支持,遂顺势更新一波本地的开发环境。
下载 PHP 源码包
在上面的链接中找到 64 位非线程安全的 Zip 压缩包,如下图:
下载后新建一个文件夹php8.0.0nts
,将压缩包解压至该文件夹中,如下图:
配置 PHP
压缩文件解压后会发现并没有 php.ini
文件,取而代之的是以下两个文件:
-
php.ini-production
-
php.ini-development
将 php.ini-development
重命名为 php.ini
并打开。
修改 extension_dir
为 PHP8 扩展所在目录:
extension_dir="D:\office\phpstudy\Extensions\php\php8.0.0nts\ext"
在文件末尾追加如下配置,开启 pathinfo,以及一些常用扩展:
cgi.fix_pathinfo=1
extension=mbstring
extension=gd
extension=fileinfo
extension=mysqli
extension=openssl
extension=pdo_sqlite
extension=pdo_mysql
extension=redis
将 Redis 的两个扩展文件 php_igbinary.dll
及 php_redis.dll
复制进 ext
文件夹,如下图:
更换系统变量
单击鼠标右键,依次打开 我的电脑 -> 高级系统设置 -> 环境变量 -> 编辑 PATH 环境变量 ,将路径更换为
D:\office\phpstudy\Extensions\php\php8.0.0nts
如下图所示:
完成后,同时按下 Control
与 R
键打开运行,输入 cmd 并回车打开命令行,并输入命令
php -v
则发现 PHP 8 升级成功,如下图:
Nginx 解析
实际上讲,Windows 环境的大部分 PHP 开发者都是和我一样使用 PHPStudy 来一键配置本地环境,毕竟此软件可以为我们省去很多琐屑的配置工作。
在默认情况下,PHPStudy 会配置一个域名为 localhost
的网站,并且它会扫描 phpstudy\Extensions\php
目录下的文件夹,让我们可以自由选择 PHP 的版本,如下图:
当我们将 PHP8 解压到 phpstudy\Extensions\php
目录后,PHPStudy 自然就多出一个 PHP8 的选项,如下图所示:
点击按钮,将版本切换为 php8.0.0nts,PHPStudy 会自动重启 phpstudy\COM\xp.cn_cgi.exe
,此 exe 文件是用来启动 nginx 及 php-cgi 的,如下图所示:
phpstudy\COM\xp.ini
是它的配置文件,在未切换 php8.0.0nts 之前,它的内容如下:
[General]
xp.cn_cgi9001=D:/office/phpstudy/COM/xp.cn_cgi.exe|../Extensions/php/php7.4.3nts/php-cgi.exe 9001 1+16
xp.cn_cgi9000=D:/office/phpstudy/COM/xp.cn_cgi.exe|../Extensions/php/php7.3.4nts/php-cgi.exe 9000 1+16
xp.cn_cgi9002=D:/office/phpstudy/COM/xp.cn_cgi.exe|../Extensions/php/php7.4.8nts/php-cgi.exe 9002 1+16
在切换为 php8.0.0nts 后,xp.cn_cgi.exe 自动重启,配置文件将多出一行关于 php8.0.0nts 的配置,如下:
xp.cn_cgi9004=D:/office/phpstudy/COM/xp.cn_cgi.exe|../Extensions/php/php8.0.0nts/php-cgi.exe 9004 1+16
可以发现 php-cgi.exe 被 xp.cn_cgi.exe 启动,并占用了 9004
端口,所以我们配置 nginx.conf 时,fastcgi_pass 的值也必须是 9004
,否则当我们访问项目网站时, nginx 将直接返回 502 网关错误,导致无法访问 PHP 项目。
例如,我们将 Laravel 项目,解析至域名 blog.com 下,需要在 nginx.conf 中新增如下配置:
server {
listen *:80;
server_name blog.com;
root "D:\office\phpstudy\WWW\blog\public";
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9004;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
以上代码中, D:\office\phpstudy\WWW\blog\public
是 Laravel 的入口文件夹,而 fastcgi_pass 127.0.0.1:9004
即 nginx 将通过 9004
端口与 php-cgi 进行通信。
与此同时,还需要将域名 blog.com 映射至本地 ip 127.0.0.1 下,所以在 Windows 的 hosts 文件新增如下配置,:
127.0.0.1 blog.com
hosts 文件的默认路径为:
C:\Windows\System32\drivers\etc
一般情况下,此目录是只读目录,我们无法直接修改 hosts 文件,但只需要将其拖至桌面,修改完毕后再拖回原目录即可。
完成以上配置后,就算是大功告成,访问 blog.com,如下图:
可以看到上图中,左下角提示 Laravel 版本为 8.16.1,PHP 版本为 8.0.0