PHP 8.0 是 PHP 语言的一个主版本更新。
它包含了很多新功能与优化项, 包括命名参数、联合类型、注解、构造器属性提升、match 表达式、nullsafe 运算符、JIT,并改进了类型系统、错误处理、语法一致性。相比较PHP7平均性能提升10%。

安装PHP8:

Windows版PHP8下载地址:https://windows.php.net/download/

本次示例使用的是VS16 x64 Thread Safe的zip(PHP 8.0 (8.0.0版))压缩包。

由于PHP要求使用VS16及以上版本。所以要确保系统中已安装了VS16,如果未安装请到微软Visual C++ downloads页面下载。通常我们会下载64位版本的vc_redist.x64.exe

我把php解压在了G:\server\php。下面确认下php是否好用。

查看PHP版本的方法:

快捷键WIN+R,运行“CMD”,进入命令行。
到php的安装目录(上述解压的位置)下,使用php -v指令查看版本。

为了使用PHP更加方便,可以将PHP目录加入到系统路径中。

添加系统变量方法:

弹出开始菜单(按win键),键入env。 从显示结果中单击“编辑系统环境变量”,将出现“系统属性”对话框。 单击“环境变量…”,从“系统变量”块中选择“路径”或“Path”。 将新的PHP文件夹添加到列表中。(因为我的是英文系统,所以截图如下)

配置PHP

PHP文件夹下有开两个文件

随便取一个改名为php.ini。然后开始编辑该文件。
找到extension_dir项目,去掉前面的井号注释。路径设置为您当前配置的路径。以本例为例:

extension_dir = "G:\server\php\ext"

可按照自己所需开启一些扩展。默认这些扩展是被注释的。

extension=curl
extension=gd
extension=mbstring
extension=mysqli
extension=openssl
extension=pdo_mysql

至此,PHP安装初步完成。

Apache的安装

下载地址:https://www.apachelounge.com/download/

我下载的是OpenSSL版的Apache2.4.46 x64。下载好后解压到:G:\server\Apache。

解压好后进入到G:\server\Apache\conf文件夹。配置httpd.conf文件。

找到SRVROOT参数,定义Apache的路径。如下:

Define SRVROOT "G:\server\Apache"
ServerRoot "${SRVROOT}"

我们常用到URL重写等模块,所以我们需要开启它。
方法是取消下面模块的注释即可:

LoadModule rewrite_module modules/mod_rewrite.so

另外,调整缓存时间,处理http响应头也需要headers模块的支持:

LoadModule headers_module modules/mod_headers.so
将Apache注册到系统服务中:

以管理员身份进入CMD命令行。

在G:\server\Apache\bin路径下输入:

httpd -k install

在通过下面的命令启动apache。

httpd -k start

如果启动成功,我们可以通过http://localhost测试一下Apache是否安装成功。

设置虚拟主机

默认的文档路径为:apache\htdocs。但是,这不是最佳的,我们通常会把站点配置到其他的位置(其他的盘符下)。 如果您是开发人员,则可能需要处理多个Web项目。 因此,对每个项目都有一个专用的文件夹和URL会很好。

例如,如果website1.com和website2.com是生产站点,则您可能需要具有开发专用目标文件夹的website1.local和website2.local这样的URL。这时需要配置虚拟主机并启用它。

首先,打开httpd.conf文件,取消httpd-vhosts.conf行注释。

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

打开conf/extra/httpd-vhosts.conf。

为您想要的每个项目添加一个条目。
ServerName,DocumentRoot和ErrorLog是重要的参数。其他参数可跳过。
假设我们的项目要存放在w:/Websites。
除此之外,您还必须允许访问这些文件夹。

<Directory "w:/Websites" >
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<VirtualHost *:80>
    ServerName weisite1.local
    DocumentRoot "w:/Websites/weisite1.local"
</VirtualHost>

<VirtualHost *:80>
    ServerName weisite2.local
    DocumentRoot "w:/Websites/weisite2.local"
</VirtualHost>

为了能在浏览器中访问weisite1.local和weisite2.local域名。我们需要配置c:\Windows\System32\drivers\etc\hosts文件。把这两个域名指向127.0.0.1 

大概如下:

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

127.0.0.1 weisite1.local
127.0.0.1 weisite2.local

记得配置完后,重启一下Apache看看会不会有报错。

PHP8和Apache的关联

设置已基本完成,但我们尚未将PHP和Apache配置为可以协同工作的好伙伴。 首先,我们必须将php扩展名添加到已知的mime类型。 为此,httpd.conf末尾添加以下行:application / x-httpd-php php。最重要的步骤是加载php模块。 为此,在httpd.conf文件中指定PHP安装目录和相应的模块。httpd.conf末尾添加如下:

AddHandler application/x-httpd-php php

PHPIniDir "G:/server/php"
LoadModule php_module "G:/server/php/php8apache2_4.dll"

AddType application/x-httpd-php html htm

重启apache,看看能否正常启动,安装是否顺利。

按照php7的安装习惯,我们会加载php8_module。但是实际上并不是那样。

注意:

通常也需要设置默认文档的优先级。httpd.conf中搜索如下代码。如果没有你想要的默认文档。按需添加。
下面代码的优先级为: index.php > index.html

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
其他:

 “Can’t locate API module structure ‘php8_module’ in file …” 遇到这种错误提示:我们只要LoadModule php_module …就可以了。 没有什么php8_module

MariaDB/Mysql的快速安装

下载地址:

https://mariadb.org/download/

按照自己的需求下载安装包并安装即可。安装步骤就不描述了。过于简单。很傻瓜。

为不同的虚拟机使用不同的PHP版本

下载php并配置

当然首先要下载php,这里下载的是php7.4.x。放到F:/Server/php74下。

下载mod_fcgid并引入

从下面的页面中找到mod_fcgid并下载:
https://www.apachelounge.com/download/

将mod_fcgid.so文件放入apache\modules文件夹

在httpd.conf添加:
LoadModule fcgid_module modules/mod_fcgid.so

设置配置代码

虚拟机配置文件中添加如下代码,代码的作用是访问my.site时,使用php7.4解析该站点的php文件。

<VirtualHost *:80>
    ServerName my.site
    DocumentRoot "F:/www/site/"

//开始
    FcgidInitialEnv PHPRC "F:/Server/php74/php.ini"
    <Directory "F:/www/my.site"> 
        <Files ~ "\.php$"> 
            AddHandler fcgid-script .php 
            FcgidWrapper "F:/Server/php74/php-cgi.exe" .php 
            Options +ExecCGI 
        </Files> 
    </Directory>
//结束
</VirtualHost>

相关文章:

https://10.1pxeye.com/windows10-setup-php7-x/