Windows下Apache+MySQL+PHP搭建web环境

之前图方便一直用wamp学了点web开发,过了一阵子发现两个wamp都出了点问题,于是决定自己手动搭一下,毕竟以后无论学开发还是学渗透测试啥的都要用

Apache

下载Apache

http://httpd.apache.org/download.cgi
mark
mark
mark
mark

解压Apache

将下载的Apache解压到D:/LocalServer目录下

配置Apache

打开Apache下的conf文件里的httpd.conf文件,找到Define SRVROOT将其右方的值改为
Define SRVROOT "D:\LocalServer\Apache24"
路径是自己的Apache安装路径

安装启动Apache

D:\LocalServer\Apache24\bin目录下以管理员身份打开命令行输入:
httpd.exe -k install -n Apache2.4
这里-n apache表示将服务命名为apache,也可以为其他的

安装完毕输出Errors reported here must be corrected before the service can be started.且该句话后面没有错误信息,说明安装成功

打开浏览器访问localhost
mark

Ctrl+R输入services.msc查看服务信息
mark

PHP

下载PHP

http://php.net/downloads.php
mark
mark

解压PHP

将下载好的PHP解压到D:/LocalServer目录下

配置环境变量

系统变量下的Path 在后面添加D:\LocalServer\php-7.2.9-Win32-VC15-x64\ext

配置PHP

在apache 的conf目录下 的 httpd.conf,在上面, 加入如下代码:

1
2
3
4
5
6
LoadModule php7_module "D:\LocalServer\php-7.2.9-Win32-VC15-x64\php7apache2_4.dll"
<IfModule mod_php7.c>
PHPINIDir "D:\LocalServer\php-7.2.9-Win32-VC15-x64"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>

路径自己修改

然后将PHP安装目录下的 php.ini-development 文件复制一份, 改成php.ini,然后修改里面的extension_dir

1
2
3
; On windows:
; extension_dir = "ext"
extension_dir = "D:\LocalServer\php-7.2.9-Win32-VC15-x64\ext"

测试是否安装成功

编写一个php文件,test.php

1
2
3
<?php
phpinfo();
?>

访问localhost/test.php
mark

添加index.php为Apache默认页面

在apache中设置访问目录后进入的默认页面为index.php
找到apache的配置文件httpd.conf后找到

1
2
3
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

添加index.php

MySQL

下载MySQL

https://dev.mysql.com/downloads/mysql/
mark
mark

解压MySQL

将下载好的MySQL解压到D:/LocalServer目录下

配置环境变量

系统变量下的Path 在后面追加MySQL文件里的bin文件夹路径.比如D:\LocalServer\mysql-8.0.12-winx64\bin

配置MySQL

Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini和my.ini文件
没有关系,自己在根目录下新建一个my.ini文件,具体内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\\LocalServer\\mysql-8.0.12-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\\LocalServer\\mysql-8.0.12-winx64\\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 密码加密
default_authentication_plugin=mysql_native_password

路径自己设置

进入MySQL安装路径的bin目录下
以管理员身份打开命令行输入mysqld install

成功后输入mysqld --initialize
自动生成了data文件夹
mark

成功后输入net start mysql
MySQL服务启动
mark

遇到的问题

执行mysqld install时报错

The vervice already exists!
The current server installed:以前安装mysql的地址/bin/mysqld-nt MYSQL

解决办法
移除原来的mysql服务
mysqld -remove MySQL

修改密码

第一次登陆MySQL时,会提示要求输入初始密码,这是考虑安全因素,命令:mysqld --initialize会随机生成密码。

初始密码在上图data文件夹下的xxx.err文件中,找到如下一行记录:

[Note] A temporary password is generated for root@localhost: NZ+uhXPq1zN.

其中NZ+uhXPq1zN.即为初始密码

登入后可以用如下命令修改密码,这里密码改为root:

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

PHP启用MySQL功能

在php.ini中解注释extension=mysqli
重启Apache
mark

密码加密问题

在安装mysql8的时候如果选择了密码加密,之后用客户端连接比如navicate,会提示客户端连接caching-sha2-password,是由于客户端不支持这种插件
在mysql8环境里,虽然可以设置default_authentication_plugin来改变认证加密方式,但是一般人不会去设置.在mysql8.0下,默认变成了default_authentication_plugin=caching_sha2_password,包括你刚初始化的root用户也是这个认证加密方式,这样的结果是让你除非用新的协议驱动,例如必须用8.0自带的mysql客户端才行,不然就连接不上数据库.这样就必然造成不兼容的情况,幸好,是可以改回旧的方式的.

进入MySQL下的bin目录,打开命令行连接MySQL输入
mysql> select Host,User,plugin,authentication_string from mysql.user;

1
2
3
4
5
6
7
8
9
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| Host | User | plugin | authentication_string |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | caching_sha2_password | *4106CC7031D11148BA5DC5361679931DE411883D |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

发现密码采用了caching_sha2_password加密,可以通过如下方式进行修改:

1
2
3
4
#修改加密规则  
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新密码(mysql_native_password模式)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword';

重新查看

1
2
3
4
5
6
7
8
9
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| Host | User | plugin | authentication_string |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | mysql_native_password | *4106CC7031D11148BA5DC5361679931DE411883D |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

end

至此环境搭建完毕

测试一下PHP连接MySQL

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$con = @new mysqli("localhost","root","karl");
if ($con->connect_errno)
{
die('Could not connect: ' . $con->connect_error);
}else{
echo "mysql connected!";
}

// some code
$con->close();
?>

mark

刚好手机与电脑在同一网段下,测试访问成功:
markmark

测试一下刚下的sqli-labs能否运行,发现sqli-labs不支持PHP7以上版本
于是搜索PHP多版本解决方案,找到了phpEnv这款十分强大的工具

然后就可以在本地玩SQL注入了
mark

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. Apache
    1. 1.1. 下载Apache
    2. 1.2. 解压Apache
    3. 1.3. 配置Apache
    4. 1.4. 安装启动Apache
  2. 2. PHP
    1. 2.1. 下载PHP
    2. 2.2. 解压PHP
    3. 2.3. 配置环境变量
    4. 2.4. 配置PHP
    5. 2.5. 测试是否安装成功
    6. 2.6. 添加index.php为Apache默认页面
  3. 3. MySQL
    1. 3.1. 下载MySQL
    2. 3.2. 解压MySQL
    3. 3.3. 配置环境变量
    4. 3.4. 配置MySQL
    5. 3.5. 遇到的问题
    6. 3.6. 修改密码
    7. 3.7. PHP启用MySQL功能
    8. 3.8. 密码加密问题
  4. 4. end