疾速造轮子,初学者windows搭建最新php7.2运行环境分分钟起飞

对工程师而言,尝试最新的开发版本都是一项极大的挑战。现在,结合过往的经验,我们将让这一过程变得轻松,并且透彻

——虽千万人吾往矣

刚开始学php的时候,我非常执着于在windows上独立安装它的运行环境,一个apache服务器、一个php解析器、一个mysql数据库,逐个下载安装可以折腾两三天,细致繁琐令人崩溃。后来知道有像wampserver、phpstudy这类集成环境一键安装,可以很快解决,但是遇到问题,初学者立刻就会陷入一头雾水的懵逼状态,原因就是——不了解集成环境究竟做了哪些事。

昨天好好的,今天服务器怎么就不能运行了?

为什么我的MySQL总是访问失败?

怎么服务器不能解析PHP啊?

这一次为了信仰而战。我们采用官方当前最新发布的apache、php、mysql的免安装版本(会提供下载),可以方便移植环境至其他电脑。经过三天持续的优化改进,在保持最小原有改动的前提下,将服务器配置简化为下面一行。

只需改里,所有的关联配置自动完成。

接下来我们需要通过windows命令行,将apache、mysql加入到系统服务中,让网站服务器、数据库开机自启动,这样所有的工作就完成了,就是如此简单。

下面将分两章说明:

第一章,让你先快速建好环境。

第二章,详细解释内在的关联。

准备工作

1、确保已下载提供的资源文件夹myServer。

全称MircoSoft Visuall C++ 2017 Redistributable(又叫VC15),更新于2018年3月8日。因为apache和php都是通过C++编译的,安装需要这个补丁,根据版本的不同还有VC9、VC11、VC14等,当然VC这个是最新的

3、以管理员身份进入windows命令行。

位于C:\Windows\System32\cmd.exe用鼠标右键选中"以管理员身份运行"或发送到桌面快捷方式,或键盘win键+x键调出命令行。下面的加入windows系统服务都围绕命令行操作

又想骗我学windows命令行cmd?

命令行就是windows中的[开发者模式]

有动图能秒懂不虚

Apache的安装

Apache HTTP 服务器的守护进程名为httpd。d即是daemon的意思,一般的网络服务都是以守护进程的方式运行。

1、修改配置文件

2、httpd加入系统服务

以上命令是通过先写在记事本复制的

3、测试

www目录为我们网站文件存放的根目录。我们预先写了几个简单的页面在里面,访问index.html说明apache服务器搭建成功,能打开index.php说明php配置也成功。

打开浏览器访问本机地址localhost或127.0.0.1。现在Apache+PHP都配置好了。可能会疑惑为什么php的配置一点都没有提到,这就是我们之前优化的成果,默认自动配置,后文会详细介绍为什么可以这样。

4、说明[拓展知识]*

其实上面的操作是在windows任务管理器->服务中添加了一个叫做myApache的服务,这里的停止和启动命令 等同于命令行中执行。注意:windows命令行没有重启动restart = 先stop 后start

MySQL的安装

MySQL数据库守护进程名为mysqld。

1、修改配置文件

#打开myServer\mysql\my.ini(推荐用Notepad++)

#根据实际修改basedir、datadir的路径

#这里我们为了防止和已有MySQL(若存在则占用3306端口)冲突,我们指明用3309端口

2、mysqld加入系统服务

3、测试

上方的动图已经测试了MySQL可成功访问,现在我们适用浏览器测试php连接mysql

4、说明[拓展知识]*

与Apache和PHP之间紧密的关系不同,MySQL的安装配置和Apache、php没半毛钱关系,通过网络端口沟通。上面我们设置的端口是3309,这样多台MySQL同时运行就不会冲突,如下图所示

由于我的电脑有一个已经在运行的MySQL,在windows任务管理器->服务中我们可以看到两个互不干扰的MySQL服务,之间的数据是完全不相关的

myServer下载地址

整个文件完全安装有1.92G,其中MySQL1.8G。这篇文章发出去的时候还没想好放在哪里提供下载,可能是通过邮件附件的形式发出,所以在公众号留言询问。

到这里所有的安装均已完成。

Q:是如何做到将配置简化为一条语句的呢?

A:主要是针对Apache的配置文件httpd.conf和php的配置文件php.ini进行了参数引入和结构调整。其中:

Apache的配置httpd.conf

Apache的主配置文件httpd.conf由533行简化到了75行,去掉无关注释根据类型拆分到多个文件中。源httpd.conf文件位于 Apache24\conf\备份 中

主配置文件httpd.conf

用户配置文件user.conf

php模块配置文件php7.conf

总结:在apache的配置里加载了php模块,所以apche服务器才可以解析xxx.php文件

php的配置php.ini

源文件保留在php.ini-development,我们复制源文件为php.ini

第737行,php中以相对路径引入扩展,所以能自适应外层文件目录改变。

网络上的参考资料大多写绝对路径E:\myServer\php\ext不够灵活,还有一种./php/ext的写法也是错误的。以上测试了G:\code\myServer的情况,发现了这种写法。含义是以php.ini所在目录为起点,跳到父目录,再回来~

第903行,开启mysqli扩展。其实这里也要写路径,但因为上面extension_dir指明的就是路径,所以这里加载只用去掉;号。默认开启也开启了curl、mbstring

第二章所提及配置 ,均在myServer中修改好,仅作说明。

那我们到这里就结束了,以后就能完全脱离集成环境了

如遇到任何问题,可通过公众号留言

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180320G1TDDV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券