Windows上搭建PHP开发环境_win php继承环境-程序员宅基地

技术标签: nginx  PHP  php  mysql  

前言

作为一个不太全面发展的客户端程序员,基本没怎么写过服务器,就是以前闲暇时候写过点php和go,用WAMP或者宝塔搭建过运行环境,这次机缘巧合要同时搞服务器和客户端,因为用到了nginx,本来想继续用宝塔搭建环境的,但是因为升级系统卸载宝塔时没有先卸载mysql,导致重新使用宝塔安装时总是提示系统有运行的mysql,无法安装,尝试了几次后就放弃了宝塔,决定从头单独软件安装。不过最后搭建完毕,发现现在基本上全是免安装了,都是压缩包,解压后修改下配置文件就可以运行了。

运行环境&安装软件

系统 Windows10 64位
数据库 mysql-5.7.28-winx64
服务器 nginx-1.16.1
PHP php-7.3.10-Win32-VC15-x64
redis Redis-x64-3.2.100
IDE PhpStorm-2019.2.3
数据库管理工具 phpMyAdmin-4.9.1-all-languages

上面的软件,redis,phpStorm,phpMyAdmin不是必须的,只是我这次搭建环境和写代码用到了。像redis,如果只是简单学习php开发的话可以不装,我这次因为服务器工程用到了redis,所以就安装了。然后就是phpMyAdmin,因为很早以前在用WAMP时用过,喜欢界面风格,这次就继续用这个了,管理mysql数据库还是好用,如果有熟悉其他管理软件,比如Navicat,也可以继续用Navicat,不必装phpMyAdmin。最后就是phpStorm,这个只是写php的IDE,因为最近全面用上了JetBrain家的软件,这次写php就继续用这个了,如果有习惯用eclipse或zend studio的就继续用,不必换上phpStorm。
上面软件只有 redis 和 phpStorm 是安装包,其他的都是压缩包,解压后配置以下即可使用。

安装目录
这里说一下我的软件安装目录,我是在某个盘下创建了一个 wnmp 的文件夹,然后把mysql,nginx,php,phpMyAdmin都解压到了 wnmp 文件夹下。因为这几个都是免安装的,直接解压即可,然后修改配置文件中的路径时也方便修改。
每个软件带上版本号放在 wnmp 下即可

数据库 mysql 安装

mysql的安装我就直接粘贴另外一个人写的博客了,我这次就是按照这篇博客安装的,亲测可用,只是我装的是5.7.28,博客里安装的是5.7.24,不过基本没有区别。按博客的说明,下载的这个版本是免安装版本,直接解压到一个目录即可。
MySQL下载与安装:https://blog.csdn.net/weixin_42869365/article/details/83472466
博客里使用命令行时用的是管理员方式,我是用管理员方式下的 PowerShell,也是可用的。 打开管理员账户的 PowerShell方式,可以使用快捷键 Win + X ,然后选择 Windows PowerShell(管理员)。

服务器 nginx 安装

直接去 nginx 官网下载一个稳定版,我下载的版本是1.16.1。
nginx官网:http://nginx.org/
下载后解压到一个目录,然后打开 conf目录下nginx.conf 文件。需要关心两块配置。

1.nginx server
nginx运行端口,域名,运行文件目录
如上图所示,这是nginx运行监听的端口,域名,运行文件配置。如果没有特殊要求可以不做修改。如果80端口被tomcat或其他本地服务器占用了,则可以修改为其他端口。其中 location 下的 root 就是 nginx 根目录下的 html 目录,可以认为是 tomcat 的 wwwroot,运行的文件或者工程可以放在这个目录,当然如果有其他运行的服务器工程可以参照 nginx.conf 新建一个 .conf文件。比如我这次运行 phpMyAdmin 就新建了一个 phpmyadmin.conf。root 下面 index 配置了两个 index.html index.htm。可以认为是默认运行文件,就是你直接运行服务器地址而不指定具体文件时会默认运行 index.html。现在可以在 index.html index.htm 后面添加一个 index.php ,然后在 html 目录创建一个 index.php 文件,index.php 中写上一点php代码备用。

<?php
phpinfo();
?>

2.fastcgi
nginx是不能直接解析php代码的,它是用到了 fastcgi 来解析php代码。相关原理可以参考这篇博客:
nginx动态解析php原理
https://blog.csdn.net/aloha12/article/details/88852714
接下来修改下 location 块,以用来解析 php。
在这里插入图片描述
首先把 location 配置块前面的 # 注释删除,然后修改 fastcgi_param ,将

/scripts$fastcgi_script_name

修改为

$document_root$fastcgi_script_name

注意前面的 fastcgi_pass 127.0.0.1:9000。如果等接下来安装完 php 环境后,在浏览器里执行 localhost/index.html 成功,但是执行 localhost/index.php 总是失败的话,有可能是 9000 端口被占用了,我装了两台电脑都是9000端口被占用了。这个时候需要更换其他未被占用的端口。
这样这两个配置块就完成了。
现在启动 nginx 。在 nginx 目录运行命令行(不是管理员方式也可以),然后执行命令:

start nginx

没有提示错误的话,在浏览器里访问 localhost 或者 127.0.0.1 ,如果成功显示 Welcome 那么表示 nginx 已经成功启动了。
nginx运行成功提示

PHP 安装

php也是免安装的压缩包,直接去 php 官网下载一个稳定版本,我下载的是 7.3.10
php官网:https://www.php.net/
将 php 压缩包解压到和 nginx 同一个目录(这个不必须,按你的需要爱好放就行)。我是新建了一个和 nginx 同级的目录,按版本号命名为 php-7.3.10,然后解压到了php-7.3.10。
然后将php目录中的 php.ini-development 拷贝一份,修改名字为 php.ini
php.ini
打开 php.ini 在其中找到

;extension_dir = "ext"
;cgi.fix_pathinfo=1
;fastcgi.impersonate = 1
enable_dl = Off
;cgi.force_redirect = 1

将前面有分号的删除分号,将 enable_dl = Off 改成 enable_dl = On。
将 cgi.force_redirect 前面的分号删除并将值改为 0
为了启用 mysqli 扩展,php连接mysql的时候会用到。找到下面两行配置将分号删除。

;extension=pdo_mysql
;extension=mysqli

其实上面打开了很多东西,如果只是运行下php代码时是不需要打开的。
下面开始运行 php-cgi 让其和 nginx 关联起来。在 php 目录运行命令行,执行命令:

php-cgi.exe -b 127.0.0.1:9000 -c php.ini

注意在 nginx fastcgi 配置里说过的9000端口,这里的端口号要和那里的端口号保持一致,如果fastcgi那里你已经修改过,这里运行命令时输入的端口要保持一致。
输入完命令后,命令行就不会再往下执行了,不出错的话就表示 php-cgi 已经执行成功。如果上面配置 nginx 时运行的 nginx 没有关闭的话,这个时候就可以在浏览器里输入

localhost/index.php

注意这里的 index.php 是在配置安装nginx时我们在 html 目录创建的文件。
如果成功那么在浏览器页面就会显示 phpinfo 。
phpinfo
如果成功出现这个界面,那么恭喜你,现在你已经可以动手写php代码进行测试了。如果有需求的话继续接下来的配置。接下来继续配置 redis,phpMyAdmin。

redis 配置

redis 配置比较属于线上性质了,如果只是单纯练手php的话,可以跳过这块配置。
详细安装配置,简单使用可以参考这篇文章:
Window下PHP环境配置使用Redis总结
https://www.cnblogs.com/lovele-/p/9414649.html

redis-server
首先去github下载 redis。我下载的是 Redis-x64-3.2.100.msi
https://github.com/MicrosoftArchive/redis/releases
然后安装到电脑上,默认路径就可以。然后运行
redis-server.exe
redis server
出现这个界面就表示成功了。设置为开机启动的话,下次运行的时候就不需要这个界面一直保持在前台了。

php redis扩展
根据你安装的 php 版本,去 php 扩展网站下载对应版本的redis扩展
需要php_igbinary.dll和php_redis.dll两个扩展文件
php扩展网站:
https://windows.php.net/downloads/pecl/releases/redis/
https://windows.php.net/downloads/pecl/releases/igbinary/
我下载的是
php_igbinary-2.0.8-7.3-ts-vc15-x64.zip
php_redis-4.2.0rc3-7.3-ts-vc15-x64.zip
解压后分别拿到 php_igbinary.dll和php_redis.dll两个扩展文件,将这两个文件放到 php 的 ext 目录下,然后修改 php.ini 文件,添加两行配置。

extension=php_igbinary.dll

extension=php_redis.dll

再次在浏览器运行 localhost/index.php。查看phpinfo,如果看到了 redis 就表示扩展成功。
如果没有看到了话,可以 reload 下 nginx 。reload nginx 命令。

nginx -s reload

phpMyAdmin 安装

phpMyAdmin 也是免安装的压缩包。去官网下载压缩包。
phpMyAdmin官网:
https://www.phpmyadmin.net/
然后解压到和nginx,php同级目录,我为了方便操作就放到同一个目录下了,参见上面写的 目录 那块内容。
在目录下找到 config.sample.ini.php 拷贝一份这个文件,将拷贝出的文件修改名字为 config.ini.php。里面内容不需要修改。
在 nginx 中添加 conf
在安装nginx时说过,可以添加一个新的 conf 来运行 phpMyAdmin。
首先可以在 nginx 的conf 目录中新建一个vhost目录,这个目录就可以放其他新建的 conf文件,比如有多个应用分别使用不同的服务器地址,就可以建立对应的 conf 文件。然后在其中新建一个
phpmyadmin.conf文件。将 nginx.conf 中的 server,location 两块内容拷贝到一个新文件中。主要是修改server监听的端口和 location 下 phpMyAdmin 的目录地址。内容如下


    server {
    
        listen       8089;
        server_name  localhost;

        #charset koi8-r;
        error_log logs/phpmyadmin.error.log;
        access_log  logs/phpmyadmin.access.log;

        location / {
    
            root   D:/wnmp/phpMyAdmin-4.9.1-all-languages;
            index  index.html index.htm index.php;
        }


        location ~ \.php$ {
    
            root           D:/wnmp/phpMyAdmin-4.9.1-all-languages;
            fastcgi_pass   127.0.0.1:3900;
			fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

    }
	

我把 server 中的端口改成了 8089,这样就不会和刚才 nginx 下默认的 80 端口冲突。再修改下 nginx.conf 文件,让其可以引用到 phpmyadmin.conf 文件。
修改nginx.conf include 新conf文件
如同所示,在 server 块中添加一行配置。注意不要添加到配置块外部。

include 'vhost/*.conf';

这样就可以 include 到 vhost 中的所有 conf 文件了,当然就包括我们刚才创建的phpmyadmin.conf 文件。
然后此时在浏览器里输入:

localhost:8089/index.php

运行phpMyAdmin也需要启动cgi

php-cgi.exe -b 127.0.0.1:9000 -c php.ini

如果成功就可以看到 phpMyAdmin 的登陆界面了。
phpMyAdmin 登陆界面
你成功启动 mysql 后,在登录界面输入一个 mysql 的账号密码就可以进入 一个mysql 数据库了。

PhpStorm 安装

JetBrain PhpStorm:
http://www.jetbrains.com/phpstorm/
这个软件就属于锦上添花的作用了,如开篇所说,如果习惯其他编写php的IDE,就可以跳过这块了。不过我在使用这个之后发现一个好功能,就是使用 PhpStorm 打开 php 工程,然后开启 listening php debug connect,PhpStorm就不需要其他任何配置就可以在线调试 php 代码了。
打开 php debug 监听
如图所示,点击一下标志就可以开启或者关闭 listening php debug connect。
我先前还安装其他文章介绍的安装配置 xdebug,在PhpStorm里配置了几次没有成功就放弃了。

结语

周末花了两天时间,配置好环境,把服务器运行起来了,并布置了一份到线上的 windows server 。然后客户端就没啥说的了,直接 AndroidStudio 修改 Gradle 运行起来,修改服务器链接,出包。
其中遇到的问题就是那个 9000 端口,迷惑了一会儿,然后就是 xdebug 配置失败,不过如上所说,使用 PhpStorm 打开 debug 后是可以直接在线调试的。
最后把一些软件放到 csdn 上,按需下载。
https://download.csdn.net/download/change_from_now/11929835
其实现在基本都是免安装的压缩包了,还是很方便的。
p.s.上传资源时发现我只有220M的上传权限,然后就把 mysql,PhpStorm 去掉了,需要的人还是去官网下载吧。 然后也没有发现修改积分的地方,系统就直接定为了5积分,也是奇怪。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/change_from_now/article/details/102773786

智能推荐

Win10设置Win+R快捷方式或保存Path路径消失&无效-程序员宅基地

文章浏览阅读943次,点赞20次,收藏19次。右击此电脑 --> 属性 --> 高级系统设置 --> 高级(概率默认进入高级) --> 环境变量 --> 系统变量 --> 双击(Path) – > 新建 --> ‘输入你之前创建的文件夹的位置’ – > 点击确定(编辑环境变量) – > 点击确定(环境变量) ------------------------------------------------------ 完成。在你电脑里的某个位置新建一个文件夹,然后把你经常使用的程序丢进去,最好名字改的简洁点,这样方便启动,(如果你想装X,自便)-

Python运算符优先级和结合性一览表_python中int(5/2)*3**2x优先级-程序员宅基地

文章浏览阅读1k次。Python运算符优先级和结合性一览表 运算符说明 Python运算符 优先级 结合性 优先级顺序 索引运算符 x[i] 或 x[i1: i2 [:i3]] 18 左 优先级从上往下递减 属性访问 x.attribute 17 左 ..._python中int(5/2)*3**2x优先级

DirectX中文手册_diray功能說明書-程序员宅基地

文章浏览阅读1.5k次,点赞3次,收藏8次。目 录第一章 DirectX基础(初级篇)第一节 什么是DirectX一、什么是DirectX ?二、DirectX的组成部分三、关于DirectDraw四、为什么要使用DirectDraw?五、DirectX5.0的新特性?六、什么是部件对象模型(COM)七、自我检测第二节 如何安装和使用DirectX一、编译库和运行库二、安装 VC++ 5..._diray功能說明書

将fmeobjects引入到外部开发环境进行FME的二次开发_fme二次开发-程序员宅基地

文章浏览阅读1.3k次。某些情况下,我们可能需要在fme的外部使用fmeobjects。比如我想针对fme封装好的模板,进行一些二次开发什么的,将其嵌入到其他程序里面来做某些事情。这就需要将fmeobjects包引入到fme的外部开发环境。将安装目录下的“fmeobjects”目录下,对应版本的pyd文件,拷贝到外部python环境的模块下。以anaconda环境为例:我需要将“C:\apps\FME21x64\fmeobjects\python36”文件夹下面的pyd文件拷贝到“C:\Users\admin\Ana_fme二次开发

java思维导图 - -13张思维导图带你快速入门 --_java基础思维导图-程序员宅基地

文章浏览阅读1w次,点赞132次,收藏303次。硬核推荐----13张思维导图带你快速入门 -- _java基础思维导图

XRDP远程连接错误总结_libxrdp_force_read: header read error-程序员宅基地

文章浏览阅读1.3w次。XRDP远程连接错误总结XRDP无法连接,出错信息如下:解决方案:sudo gedit /etc/xrdp/sesman.inisudo gedit /etc/xrdp/sesman.ini在末尾加上:param8=-SecurityTypesparam9=None然后重启xrdp服务:sudo service xrdp restartReference:htt..._libxrdp_force_read: header read error

随便推点

STM32F072C8T6调试IAP(CAN)记录_stm32f072的can例程-程序员宅基地

文章浏览阅读5.5k次,点赞2次,收藏9次。STM32F072C8T6调试IAP(CAN)记录_stm32f072的can例程

OpenCV(9): 轮廓检测代码详解以及图像轮廓检测处理的全部流程_图像检测代码-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏10次。Opencv图像轮廓检测主要是通过对图像进行边缘提取,并将提取出的边缘连接成为一个完整的边缘线来实现的。_图像检测代码

2021-02-21-程序员宅基地

文章浏览阅读49次。课题调查问卷分析报告

【科研基础|课程】矩阵分析 持续更新-程序员宅基地

文章浏览阅读842次,点赞25次,收藏20次。卡氏积:集合的乘积cartesian product,两个集合各取一个数构成一个个对。举例:平面是两个直线坐标的cartesian product。前者是集合的映射,后者是元素的映射。举例sinx的集合映射是(-域的定义:可以进行加减乘除四种运算的运算系统。[-1, 1],取一个元素π映射为0,即。映射带尾与不带尾的箭头。

@Controller 和 @RestController 的区别_@controller和@restcontrollaer区别-程序员宅基地

文章浏览阅读129次。解释:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。1.如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。2.如果需要返回..._@controller和@restcontrollaer区别

使用STM32编写一个简单的RTOS:2.对象管理_#define _obj_container_list_init(c) \ {&(rt_object-程序员宅基地

文章浏览阅读464次。文章目录内核对象管理架构代码分析参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、对象管理器。内核对象管理架构RT-Thread 采用内核对象管理系统来访问 / 管理所有内核对象,内核对象包含了内核中绝大部分设施,这些内核对象可以是静态分配的静态对象,也可以是从系统内存堆中分配的动态对象。通过这种内核对象的设计方式,RT-Thread 做到了不依赖于具体的..._#define _obj_container_list_init(c) \ {&(rt_object_container[c].object_list)

推荐文章

热门文章

相关标签