Windows Apache2.4 PHP7.4 Mysql8 绿色纯净安装教程

php运行环境的搭建是困扰新手们的一道难题,很多童鞋为了省事经常直接安装集成的环境, 虽然简单方便,但个人觉得,这样对于深入学习及问题排错会造成相当大的困扰, 其实手动自行安装和配置环境,也是非常简单快速的,请看下文。

1. 文件下载和安装

首先下载所需的文件. 我们已经把所有文件打包到一个zip文件,下载解压后,直接跳转到步骤-->
5. MySQL配置
打包文件下载地址: http://download.masterlab.vip/phpenv.zip ,解压后目录结构:

      C:/phpenv            
        |--   Apache24   
        |--   php-7.4    
        |--   mysql-8.0 
        |--   www
              |-- masterlab

当然也可以到官方网站逐个下载, 然后手动配置

VC运行库

    # Apache和PHP运行需要 Microsoft visual c++ 2019 redistributable (x64) 
    VC15下载页面 https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
    直接下载地址 https://aka.ms/vs/16/release/VC_redist.x64.exe

Apache2.4

  # 选择 win64-VC15 2.4.41 版本
  官方下载页 https://www.apachelounge.com/download/VC15/
  直接下载地址 https://home.apache.org/~steffenal/VC15/binaries/httpd-2.4.41-win64-VC15.zip

PHP7.4

  # 选择 7.4.0-Win32-vc15-x64 版本
  官网下载地址 https://windows.php.net/downloads/releases/php-7.4.0-Win32-vc15-x64.zip

PHP-Redis扩展库

  #  这里选择 5.1.1-7.4-ts-vc15-x64 版本
  官网下载地址 https://windows.php.net/downloads/pecl/releases/redis/5.1.1/php_redis-5.1.1-7.4-ts-vc15-x64.zip

Mysql8.0

  官方下载页: https://dev.mysql.com/downloads/mysql/
  官方直接下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18-winx64.zip 
  163镜像直接下载地址:http://mirrors.163.com/mysql/Downloads/MySQL-8.0/mysql-8.0.18-winx64.zip

Masterlab3.0

  官方直接下载地址: http://download.masterlab.vip/masterlab-last.zip

Redis-server3.0

   直接下载地址:http://download.masterlab.vip/Redis-x64-3.0.504.zip

下载完毕后,将Apache,PHP,Mysql压缩包解压到统一的一个目录下,如 c:/phpenv
首先安装VC运行库,如果已经安装则忽略; 接着将 php_redis-5.1.1-7.4-ts-vc15-x64.zip 压缩包内的 php-redis.dll 文件解压到 c:/phpenv/php-7.4/ext 目录下

注:如果你想安装别的版本,请确保 Apache,php,php的redis扩展都是一个VC库,比如我这里使用的都是VC15 64位的版本

2. Apache 配置

下面以C:\phpenv作为环境的基准目录

首先编辑 c:\phpenv\Apache24\conf\httpd.conf 文件

找到 Define SRVROOT "c:/Apache24" 替换为 Define SRVROOT "c:/phpenv/Apache24"

找到

<Directory />
    AllowOverride none
    Require all denied
</Directory>

替换为

<Directory />
  Options FollowSymLinks
  AllowOverride All
  #Allow from All
</Directory>

找到 ;LoadModule rewrite_module modules/mod_rewrite.so 去掉前面的;

找到

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

修改为

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>

找到 #Include conf/extra/httpd-vhosts.conf 去掉前面的#

在文件末尾增加

# php7 support
LoadModule php7_module "c:/phpenv/php-7.4/php7apache2_4.dll"
AddType application/x-httpd-php .php .html .htm

# configure the path to php.ini
PHPIniDir "c:/phpenv/php-7.4"

保存 c:\phpenv\Apache24\conf\httpd.conf

打开 C:/phpenv/Apache24/conf/extra/httpd-vhosts.conf 增加内容

  # 默认80端口,可以更改
  <VirtualHost *:80>
    DocumentRoot "c:/phpenv/www/masterlab/public"
    # 暂且用下面域名测试,以后正式使用修改掉就好
    ServerName  www.yoursite.com
    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride All
        #Allow from All
    </Directory>
    <Directory "c:/phpenv/www/masterlab/public">
        Options  Indexes FollowSymLinks
        AllowOverride All
        #Order allow,deny
        #Allow from All
    </Directory>

  </VirtualHost>

3. PHP 配置

c:/phpenv/php-7.4/php.ini-production 重命名为 c:/phpenv/php-7.4/php.ini 修改 c:/phpenv/php-7.4/php.ini

找到 error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 替换为 error_reporting = E_ERROR

找到 ;extension_dir = "ext" 替换为 extension_dir = "C:/phpenv/php-7.4/ext"

找到下面的每一行

;extension=curl
;extension=gd2
;extension=mysqli
;extension=pdo_mysql
;extension=mbstring
;extension=ldap

去掉前面的 ;

文件末尾增加

[Redis]
extension=php_redis.dll

将php目录下的libssh2.dll放到Apache的bin目录下

进入命令行启动 apache

cd c:\phpenv\Apache24\bin
httpd.exe

10000cut-201912302112512522.png

启动成功没有报错的话,在浏览器中访问 http://localhost/p.php ,便可以查看php的配置输出

10000cut-201912302212385958.png

可以将Apache加入到服务中

cd c:\phpenv\Apache24\bin
 httpd -k install 

4. 安装过程遇到的问题排除

  1. 本教程在windows7 ,windows10, windows server2008 64位操作系统下通过测试,其他32位操作系统请下载时改变对应的32版本即可
  2. 遇到vcruntime140.dll 错误的问题,请下载安装 vc_redist_x64/86.exe 运行库
  3. Apache默认80端口,如果已经被其他进程占用,请修改 c:\phpenv\Apache24\conf\httpd.conf 80 端口为其他

5. Mysql 配置

进入一个新的命令行


# 进入bin目录
cd c:\phpenv\mysql-8.0\bin
# 安装mysql服务
mysqld  -install
# 执行初始化
mysqld --initialize-insecure
# 启动mysql服务
net start mysql

1cut-201912301612416930.png

在Mysql根目录下创建配置文件 my.ini,内容如下:

[client]
#客户端端口号为3306
port   = 3306
default-character-set=utf8

[mysqld]
# 设置3306端口
port = 3306
user = root
socket  =C:/phpenv/mysql-8.0/bin/mysql.sock
# 设置mysql的安装目录
basedir=C:/phpenv/mysql-8.0
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
#datadir=C:/phpenv/mysql-8.0/data
max_connections=128
character-set-server=utf8
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password

将my.ini文件路径加入到环境变量 Path 中

使用root用户操作数据库,这样很不安全,因此要要创建一个新的mysql用户
打开一个新的命令行,通过sql命令创建: 用户名 dev_user , 密码 123456

# root密码默认为空,如果错误可以查看 log/mysqld.log 
mysql -u root -h127.0.0.1
# 创建新用户并赋予权限
create user 'dev_user'@'%' identified by '123456';
alter user 'dev_user'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
grant all privileges on *.* to 'dev_user'@'%';
flush privileges;

1cut-201912301612126556.png

使用Mysql管理工具Navicat测试是否连接成功
1cut-201912301612161636.png

6. Redis-server 启动

直接运行 c:\phpenv\Redis-server\redis-server.exe 文件即可. 默认为 6379 端口,如果要改为Windows服务方式管理,执行以下命令

# 进入目录  
cd c:\phpenv\Redis-server
# 注册服务,并命名为 redis-hd
redis-server.exe --service-install redis.windows.conf --service-name redis-hd

# 开启服务
sc start redis-hd

# 停止服务 sc stop redis-hd
# 删除服务 sc delete redis-hd

7. 重新启动Apache

cd c:\phpenv\Apache24\bin      # 进入Apache的bin
httpd -k install               # 已经执行过就忽略 
httpd                          # 或者在windows服务里找到Apache手动启动

8. Masterlab 安装

由于演示安装需要模拟一个域名。编辑 C:\Windows\System32\drivers\etc\HOSTS 文件,在末尾追加

127.0.0.1 www.yoursite.com

在浏览器(一定要用非IE内核的浏览器)中访问 http://www.yoursite.com/install
请按照提示,一步一步执行即可
需要注意的是,数据库服务器请使用 127.0.0.1 ,否则会提示连接失败

1cut-201912301712329462.png

1cut-201912301712302468.png

如果要更换域名访问,则修改 C:/phpenv/Apache24/conf/extra/httpd-vhosts.conf 中的域名,然后重启Apache,

good luck to u~~

Masterlab - 404
404
您所访问的页面不存在或出错了
help->pageIndex no found;
debug
Sql:
Array
(
)
TRACE:
Array
(
)
GET:
Array
(
    [md] => install-windows-pure
    [_target] => Array
        (
            [0] => help
        )

)
POST:
Array
(
)
FILES:
Array
(
)
Include: 118
Array
(
    [0] => /data/www/masterlab_site/public/index.php
    [1] => /data/www/masterlab_site/app/globals.php
    [2] => /data/www/masterlab_site/vendor/autoload.php
    [3] => /data/www/masterlab_site/vendor/composer/autoload_real.php
    [4] => /data/www/masterlab_site/vendor/composer/platform_check.php
    [5] => /data/www/masterlab_site/vendor/composer/ClassLoader.php
    [6] => /data/www/masterlab_site/vendor/composer/autoload_static.php
    [7] => /data/www/masterlab_site/vendor/symfony/polyfill-php72/bootstrap.php
    [8] => /data/www/masterlab_site/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
    [9] => /data/www/masterlab_site/vendor/ralouphie/getallheaders/src/getallheaders.php
    [10] => /data/www/masterlab_site/vendor/symfony/polyfill-ctype/bootstrap.php
    [11] => /data/www/masterlab_site/vendor/symfony/polyfill-intl-idn/bootstrap.php
    [12] => /data/www/masterlab_site/vendor/guzzlehttp/psr7/src/functions_include.php
    [13] => /data/www/masterlab_site/vendor/guzzlehttp/psr7/src/functions.php
    [14] => /data/www/masterlab_site/vendor/guzzlehttp/promises/src/functions_include.php
    [15] => /data/www/masterlab_site/vendor/guzzlehttp/promises/src/functions.php
    [16] => /data/www/masterlab_site/vendor/symfony/polyfill-mbstring/bootstrap.php
    [17] => /data/www/masterlab_site/vendor/guzzlehttp/guzzle/src/functions_include.php
    [18] => /data/www/masterlab_site/vendor/guzzlehttp/guzzle/src/functions.php
    [19] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/bootstrap.php
    [20] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/function.php
    [21] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/FilterSqlInject.php
    [22] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/HornetCoreException.php
    [23] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/HornetLogicException.php
    [24] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/ErrorHandler.php
    [25] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/HornetEngine.php
    [26] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/protocol/Iprotocol.php
    [27] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/protocol/Api.php
    [28] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/protocol/Ajax.php
    [29] => /data/www/masterlab_site/vendor/lcobucci/jwt/compat/class-aliases.php
    [30] => /data/www/masterlab_site/vendor/lcobucci/jwt/src/Token/Plain.php
    [31] => /data/www/masterlab_site/vendor/lcobucci/jwt/src/Token.php
    [32] => /data/www/masterlab_site/vendor/lcobucci/jwt/src/Token/Signature.php
    [33] => /data/www/masterlab_site/vendor/lcobucci/jwt/src/Signature.php
    [34] => /data/www/masterlab_site/vendor/lcobucci/jwt/compat/json-exception-polyfill.php
    [35] => /data/www/masterlab_site/vendor/lcobucci/jwt/compat/lcobucci-clock-polyfill.php
    [36] => /data/www/masterlab_site/app/function/autoload.php
    [37] => /data/www/masterlab_site/app/function/array.php
    [38] => /data/www/masterlab_site/app/function/common.php
    [39] => /data/www/masterlab_site/app/function/cryptojs-aes.php
    [40] => /data/www/masterlab_site/app/function/sql.php
    [41] => /data/www/masterlab_site/app/function/string.php
    [42] => /data/www/masterlab_site/app/function/system.php
    [43] => /data/www/masterlab_site/app/function/time.php
    [44] => /data/www/masterlab_site/app/function/upload_image.php
    [45] => /data/www/masterlab_site/app/function/web.php
    [46] => /data/www/masterlab_site/app/function/response_error.php
    [47] => /data/www/masterlab_site/app/function/excel.php
    [48] => /data/www/masterlab_site/vendor/symfony/yaml/Yaml.php
    [49] => /data/www/masterlab_site/vendor/symfony/yaml/Parser.php
    [50] => /data/www/masterlab_site/vendor/symfony/yaml/Inline.php
    [51] => /data/www/masterlab_site/vendor/symfony/yaml/Unescaper.php
    [52] => /data/www/masterlab_site/app/config/app.cfg.php
    [53] => /data/www/masterlab_site/app/constants.php
    [54] => /data/www/masterlab_site/app/config/common.cfg.php
    [55] => /data/www/masterlab_site/app/config/session.cfg.php
    [56] => /data/www/masterlab_site/app/ctrl/Help.php
    [57] => /data/www/masterlab_site/app/ctrl/BaseCtrl.php
    [58] => /data/www/masterlab_site/vendor/symfony/event-dispatcher/EventDispatcher.php
    [59] => /data/www/masterlab_site/vendor/symfony/event-dispatcher/EventDispatcherInterface.php
    [60] => /data/www/masterlab_site/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php
    [61] => /data/www/masterlab_site/app/model/SettingModel.php
    [62] => /data/www/masterlab_site/app/model/BaseDictionaryModel.php
    [63] => /data/www/masterlab_site/app/model/CacheModel.php
    [64] => /data/www/masterlab_site/app/model/DbModel.php
    [65] => /data/www/masterlab_site/app/model/BaseModel.php
    [66] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php
    [67] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Configuration.php
    [68] => /data/www/masterlab_site/vendor/doctrine/event-manager/lib/Doctrine/Common/EventManager.php
    [69] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/MySQL/Driver.php
    [70] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php
    [71] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php
    [72] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver.php
    [73] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ExceptionConverterDriver.php
    [74] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/VersionAwarePlatformDriver.php
    [75] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php
    [76] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Connection.php
    [77] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/TransactionIsolationLevel.php
    [78] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/ParameterType.php
    [79] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/FetchMode.php
    [80] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php
    [81] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Connection.php
    [82] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php
    [83] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ServerInfoAwareConnection.php
    [84] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOQueryImplementation.php
    [85] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Statement.php
    [86] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php
    [87] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Statement.php
    [88] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ResultStatement.php
    [89] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Result.php
    [90] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatementImplementations.php
    [91] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Events.php
    [92] => /data/www/masterlab_site/lib/MyRedis.php
    [93] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/SQLParserUtils.php
    [94] => /data/www/masterlab_site/app/classes/UserAuth.php
    [95] => /data/www/masterlab_site/app/ctrl/Resource.php
    [96] => /data/www/masterlab_site/lib/parsedown/Parsedown.php
    [97] => /data/www/masterlab_site/app/view/help.php
    [98] => /data/www/masterlab_site/app/view/common/header-meta.php
    [99] => /data/www/masterlab_site/app/view/common/header-style.php
    [100] => /data/www/masterlab_site/app/view/common/header-script.php
    [101] => /data/www/masterlab_site/app/view/common/body-header.php
    [102] => /data/www/masterlab_site/app/view/common/common-footer.php
    [103] => /data/www/masterlab_site/app/view/common/siteFooter.php
    [104] => /data/www/masterlab_site/app/view/modal/login.php
    [105] => /data/www/masterlab_site/app/view/modal/signup.php
    [106] => /data/www/masterlab_site/app/view/modal/get-started.php
    [107] => /data/www/masterlab_site/app/view/modal/try.php
    [108] => /data/www/masterlab_site/app/view/modal/trial.php
    [109] => /data/www/masterlab_site/app/view/modal/buy-premium.php
    [110] => /data/www/masterlab_site/app/view/modal/loading.php
    [111] => /data/www/masterlab_site/app/view/modal/signup-failed.php
    [112] => /data/www/masterlab_site/app/view/modal/existing-account.php
    [113] => /data/www/masterlab_site/app/view/modal/unsupported-browser.php
    [114] => /data/www/masterlab_site/app/view/modal/calculate.php
    [115] => /data/www/masterlab_site/app/view/modal/sso-signup.php
    [116] => /data/www/masterlab_site/app/view/modal/i18n.php
    [117] => /data/www/masterlab_site/app/view/exception.php
)