header-bg.jpg
Windows 环境升级 PHP 8
发表于 2020-11-27 16:31
|
分类于 PHP
|
评论次数 0
|
阅读次数 508

https://img.lcgod.com/2020/11/27/1606463816.png

PHP 8.0 重大版本更新于 11 月 26 日正式开放下载,新版本引入了可选的 JIT 编译器,将现有的 JSON 支持集成到核心(不再是可选),并增加了对属性、联合类型,静态返回类型和其他附加语言的支持,遂顺势更新一波本地的开发环境。

下载 PHP 源码包

官网传送

在上面的链接中找到 64 位非线程安全的 Zip 压缩包,如下图:

0.png

下载后新建一个文件夹php8.0.0nts,将压缩包解压至该文件夹中,如下图:

1.png

配置 PHP

压缩文件解压后会发现并没有 php.ini 文件,取而代之的是以下两个文件:

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.dllphp_redis.dll 复制进 ext 文件夹,如下图:

2.png

更换系统变量

单击鼠标右键,依次打开 我的电脑 -> 高级系统设置 -> 环境变量 -> 编辑 PATH 环境变量 ,将路径更换为

D:\office\phpstudy\Extensions\php\php8.0.0nts

如下图所示:

4.png

完成后,同时按下 ControlR 键打开运行,输入 cmd 并回车打开命令行,并输入命令

php -v

则发现 PHP 8 升级成功,如下图:

5.png

Nginx 解析

实际上讲,Windows 环境的大部分 PHP 开发者都是和我一样使用 PHPStudy 来一键配置本地环境,毕竟此软件可以为我们省去很多琐屑的配置工作。

在默认情况下,PHPStudy 会配置一个域名为 localhost 的网站,并且它会扫描 phpstudy\Extensions\php 目录下的文件夹,让我们可以自由选择 PHP 的版本,如下图:

7.png

当我们将 PHP8 解压到 phpstudy\Extensions\php 目录后,PHPStudy 自然就多出一个 PHP8 的选项,如下图所示:

6.png

点击按钮,将版本切换为 php8.0.0nts,PHPStudy 会自动重启 phpstudy\COM\xp.cn_cgi.exe,此 exe 文件是用来启动 nginx 及 php-cgi 的,如下图所示:

8.png

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.exexp.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,如下图:

9.png

可以看到上图中,左下角提示 Laravel 版本为 8.16.1,PHP 版本为 8.0.0

发布评论
还没有评论,快来抢沙发吧!