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

智能推荐

class和struct的区别-程序员宅基地

文章浏览阅读101次。4.class可以有⽆参的构造函数,struct不可以,必须是有参的构造函数,⽽且在有参的构造函数必须初始。2.Struct适⽤于作为经常使⽤的⼀些数据组合成的新类型,表示诸如点、矩形等主要⽤来存储数据的轻量。1.Class⽐较适合⼤的和复杂的数据,表现抽象和多级别的对象层次时。2.class允许继承、被继承,struct不允许,只能继承接⼝。3.Struct有性能优势,Class有⾯向对象的扩展优势。3.class可以初始化变量,struct不可以。1.class是引⽤类型,struct是值类型。

android使用json后闪退,应用闪退问题:从json信息的解析开始就会闪退-程序员宅基地

文章浏览阅读586次。想实现的功能是点击顶部按钮之后按关键字进行搜索,已经可以从服务器收到反馈的json信息,但从json信息的解析开始就会闪退,加载listview也不知道行不行public abstract class loadlistview{public ListView plv;public String js;public int listlength;public int listvisit;public..._rton转json为什么会闪退

如何使用wordnet词典,得到英文句子的同义句_get_synonyms wordnet-程序员宅基地

文章浏览阅读219次。如何使用wordnet词典,得到英文句子的同义句_get_synonyms wordnet

系统项目报表导出功能开发_积木报表 多线程-程序员宅基地

文章浏览阅读521次。系统项目报表导出 导出任务队列表 + 定时扫描 + 多线程_积木报表 多线程

ajax 如何从服务器上获取数据?_ajax 获取http数据-程序员宅基地

文章浏览阅读1.1k次,点赞9次,收藏9次。使用AJAX技术的好处之一是它能够提供更好的用户体验,因为它允许在不重新加载整个页面的情况下更新网页的某一部分。另外,AJAX还使得开发人员能够创建更复杂、更动态的Web应用程序,因为它们可以在后台与服务器进行通信,而不需要打断用户的浏览体验。在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种常用的技术,用于在不重新加载整个页面的情况下,从服务器获取数据并更新网页的某一部分。使用AJAX,你可以创建异步请求,从而提供更快的响应和更好的用户体验。_ajax 获取http数据

Linux图形终端与字符终端-程序员宅基地

文章浏览阅读2.8k次。登录退出、修改密码、关机重启_字符终端

随便推点

Python与Arduino绘制超声波雷达扫描_超声波扫描建模 python库-程序员宅基地

文章浏览阅读3.8k次,点赞3次,收藏51次。前段时间看到一位发烧友制作的超声波雷达扫描神器,用到了Arduino和Processing,可惜啊,我不会Processing更看不懂人家的程序,咋办呢?嘿嘿,所以我就换了个思路解决,因为我会一点Python啊,那就动手吧!在做这个案例之前先要搞明白一个问题:怎么将Arduino通过超声波检测到的距离反馈到Python端?这个嘛,我首先想到了串行通信接口。没错!就是串口。只要Arduino将数据发送给COM口,然后Python能从COM口读取到这个数据就可以啦!我先写了一个测试程序试了一下,OK!搞定_超声波扫描建模 python库

凯撒加密方法介绍及实例说明-程序员宅基地

文章浏览阅读4.2k次。端—端加密指信息由发送端自动加密,并且由TCP/IP进行数据包封装,然后作为不可阅读和不可识别的数据穿过互联网,当这些信息到达目的地,将被自动重组、解密,而成为可读的数据。不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。2.使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。_凯撒加密

工控协议--cip--协议解析基本记录_cip协议embedded_service_error-程序员宅基地

文章浏览阅读5.7k次。CIP报文解析常用到的几个字段:普通类型服务类型:[0x00], CIP对象:[0x02 Message Router], ioi segments:[XX]PCCC(带cmd和func)服务类型:[0x00], CIP对象:[0x02 Message Router], cmd:[0x101], fnc:[0x101]..._cip协议embedded_service_error

如何在vs2019及以后版本(如vs2022)上添加 添加ActiveX控件中的MFC类_vs添加mfc库-程序员宅基地

文章浏览阅读2.4k次,点赞9次,收藏13次。有时候我们在MFC项目开发过程中,需要用到一些微软已经提供的功能,如VC++使用EXCEL功能,这时候我们就能直接通过VS2019到如EXCEL.EXE方式,生成对应的OLE头文件,然后直接使用功能,那么,我们上篇文章中介绍了vs2017及以前的版本如何来添加。但由于微软某些方面考虑,这种方式已被放弃。从上图中可以看出,这一功能,在从vs2017版本15.9开始,后续版本已经删除了此功能。那么我们如果仍需要此功能,我们如何在新版本中添加呢。_vs添加mfc库

frame_size (1536) was not respected for a non-last frame_frame_size (1024) was not respected for a non-last-程序员宅基地

文章浏览阅读785次。用ac3编码,执行编码函数时报错入如下:[ac3 @ 0x7fed7800f200] frame_size (1536) was not respected for anon-last frame (avcodec_encode_audio2)用ac3编码时每次送入编码器的音频采样数应该是1536个采样,不然就会报上述错误。这个数字并非刻意固定,而是跟ac3内部的编码算法原理相关。全网找不到,国内音视频之路还有很长的路,音视频人一起加油吧~......_frame_size (1024) was not respected for a non-last frame

Android移动应用开发入门_在安卓移动应用开发中要在活动类文件中声迷你一个复选框变量-程序员宅基地

文章浏览阅读230次,点赞2次,收藏2次。创建Android应用程序一个项目里面可以有很多模块,而每一个模块就对应了一个应用程序。项目结构介绍_在安卓移动应用开发中要在活动类文件中声迷你一个复选框变量

推荐文章

热门文章

相关标签