配置需求

  • 操作系统:Windows7(x32/x64), windows2008
  • IIS版本:7.0
  • PHP版本:7.0.6 及以上
  • MySQL版本:5.7.12 及以上

第一步:安装 IIS

注意:从IIS 7+PHP 5.5版本开始,Windows下PHP环境的配置完全不一样,相比之前版本的安装更快更轻松,配合FastCGI,只需鼠标简单操作一下就可以运行PHP环境。

1.找到”控制面板 => 程序和功能 => 打开或关闭Windows功能“

默认”Internet 信息服务“打勾安装

直接选择CGI,会自动安装FastCGI,不需要再安装ISAPI

2.新建网站目录

运行->inetmgr

右击”网站=>添加网站“

添加网站信息,一定按图片所示设置,除了路径自选

弹出”80端口占用“,意味着你将会有另一个网站【Default Web Site】同时占用80端口,解决办法:

  1. 点击取消,返回修改端口,重新确定。
  2. 点击确定,每次使用时,关闭其中一个网站

第二步:安装 PHP

下载地址:http://windows.php.net/download/
官网可以下载到Windows版的最新PHP包,但是PHP.net已经放弃5.6版以前的环境包,大叔这里整理了一份以前的环境包列表,有需要的同学可以自己去拿

百度云盘:https://pan.baidu.com/s/1BJgFhrCHRBj1VFkgGegZ8g
访问密码:11mh

将PHP环境包解压后,找到php.ini-xxx文件

既然是本地开发测试,大叔建议:复制”php.ini-development“ 并粘贴,重命名为php.ini

php.ini-development
php.ini-dist
5.5版以后名称
5.5版以前名称
拥有较低的安全性设定,对权限设置适合开发程式使用
php.ini-production
php.ini-recommended
5.5版以后名称
5.5版以前名称
拥有较高的安全性设定,则适合正式上线的服务器中使用

配置 php.ini

1.设置extension_dir插件

搜索并找到extension_dir = "",在""里面输入PHP插件ext目录所在的位置,extension_dir = "C:/ProgramFiles/XXX/XXX/php目录名/ext"

搜索并找到extension_dir=,会找到插件目录列表,大叔建议打开以下插件(去掉前面”;“)维持大部分的PHP网站功能,如果有其他需求再打开其他插件(注:配置一次PHP.ini就需要重启一次IIS

插件名 插件功能
extension=php_bz2.dll 压缩插件
extension=php_curl.dll 远程粘贴
extension=php_gd2.dll GD库
extension=php_mbstring.dll 短标签
extension=php_mysql.dll MySQL老引擎
extension=php_mysqli.dll MySQL新引擎
extension=php_pdo_mysql.dll MySQLPDO连接

2.设置时区:date.timezone = Asia/Shanghai
3.IIS 添加 PHP 支持

运行->inetmgr

打开:处理程序映射

打开:添加模块映射

填写如下内容

确定会有提示,点击”确定“

映射程序添加成功,列表中会有一条PHP程序映射记录

这样一个IIS+PHP环境就搭建好了。

PHP包:版本/型号区别

  • 5.5版本之前
    Windows配置IIS+PHP,需要安装VC9
    Windows配置Apache+PHP,需要安装VC6
  • 5.5版本之后只有VCXX了,只要选线程方式和32位/64位系统就可以了
    Non Thread Safe是指非线程安全,Thread Safe则是指线程安全
    使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本
    使用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率

FastCGI 进程错误汇总

错误1:php-cgi.exe - FastCGI 进程意外退出

打开http://localhost页面,提示以上错误,95%以上就是环境对应的VC版本没装对。

你需要寻找PHP VC号对应的Visual C++ Redistributable for Visual Studio开发版本:

VC号 VS对应版本号
VC6 VC6.0
VC7 VS2002
VC7.1 VS2003
VC8 VS2005
VC9 VS2008
VC10 VS2010
VC11 VS2012
VC12 VS2013
VC13 VS2014
VC14 VS2015

5.5版本需要安装 VS2012
5.7版本需要安装 VS2015

错误2:发生未知 FastCGI 错误错误代码为0x8007010b

如果之前的安装严格按照本文所述,那应该考虑权限问题,是否把PHP、Apache、MySQL程序放置在了C盘的严控权限位置(比如桌面)。

将程序文件夹添加人员【Everyone】,权限为【所有】,重新刷新页面即可。

第三步:安装 MySQL

下载地址:https://dev.mysql.com/downloads/mysql/

百度云盘:https://pan.baidu.com/s/19ffxCVYgTUbmMzNwI8CB6g
访问密码:l5fb

大叔建议使用免安装版,使用CMD方式安装,是最容易熟悉MySQL的方法,本文的安装流程是以绿色版为标准。
百度网盘是本文配套的MySQL 5.7 官方免安装版

进入官网下载页面,拖至最下面,或在页面搜索 Other Downloads:

32位系统下载:Windows (x86, 32-bit), ZIP Archive
64位系统下载:Windows (x86, 64-bit), ZIP Archive

配置 my.ini

my.ini】是MySQL安装使用的核心文件,安装与使用都需要靠他来引导。

将文件下载后解压,复制 my--default.ini 复制并重命名为 my.ini(新版的好像都不再带 my--default.ini,所以自己在根目录下建一个 my.ini

1.设置MySQL安装路径

my.ini 中,一定要存在下面的字符,如果不存在,就自己码进去,然后保存,

[mysqld]
#skip-grant-tables #这名加上可以跳过验证
basedir= C:/User/Administrator/XXX/XXX/mysql-noinstall-5.1.53-win32 #根目录
#datadir=C:/User/Administrator/XXX/XXX/mysql-noinstall-5.1.53-win32/data #数据文件存放目录
2.人工安装 MySQL

打开CMD控制台

通过CMDcd  命令,进入MySQL的根目录下的bin文件夹

bin文件夹下分别输入下面三条指令:

mysqld --install MySQL  回车(成功会提示,S开头字母)
mysqld -remove 回车(如果安装位置出错,就用这个命令删除配置,然后重新安装。)
net start mysql 回车(成功会提示服务已经运行)

如果安装成功,就可以通过CMD命令,轻松开启/关闭MySQL

注意:保存【my.ini】时编码一定设为Ansi,否则会报如下错误

error: Found option without preceding group in config file: D:\Program Files\mysql-5.6.25-winx64\my.ini at line: 1
Fatal error in defaults handling. Program aborted。

这时,你在CMD中运行net start mysql命令,恭喜,你进入了MySQL的的卡死循环状态中。

错误提示解决方案汇总

1.服务无法启动

C:XXX>mysql>bin>net start mysql
MySQL 服务正在启动 ....
MySQL 服务无法启动。
服务没有报告任何错误。
请键入 NET HELPMSG 3534 以获得更多的帮助。

解决方案:【MySQL】服务无法启动,服务没有报告任何错误的解决办法

2.新安装MySQL,Root空密码无法登录

MySQL> mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解决方案:【MySQL】免安装版安装并启动成功后,无法登录,root帐户密码强制重设

第四步:设置伪静态

1.下载 IIS 7 的 Microsoft URL 重写模块 2.0 模板

官网64位:http://www.microsoft.com/zh-cn/download/details.aspx?id=7435
官网32位:http://www.microsoft.com/zh-cn/download/details.aspx?id=5747
IIS URL Rewrite下载地址:http://www.iis.net/download/URLRewrite

2.设置web.config

<rewrite>
<rules>
<rule name="Rewrite to index.php" stopProcessing="true">
<match url="^index.html" />
<action type="Rewrite" url="index.php" />
</rule>
<rule name="Rewrite to article.php" stopProcessing="true">
<match url="^article_(d+).html" />
<action type="Rewrite" url="article.php?id={R:1}" />
</rule>
<rule name="Rewrite to list.php" stopProcessing="true">
<match url="^list_(d+)_(d+).html" />
<action type="Rewrite" url="list.php?id={R:1}&page={R:2}" />
</rule>
<rule name="Rewrite to category.php" stopProcessing="true">
<match url="^(.*)" />
<action type="Rewrite" url="category.php?category={R:1}" />
</rule>
</rules>
</rewrite>​

其他问题

问题1:File upload error - unable to create a temporary file in Unknown on line 0

原因:因为PHP的临时目录为不可读写

解决方案:

  1. 打开 php.ini 找到 upload_tmp_dir
  2. 找一个位置为php上传临时目录,然后 upload_tmp_dir = "D://upload/"
问题2:PHP Notice:  Undefined variable

原因:PHP默认的配置会报这个错误,虽然有利于发现错误,但同时实践中会出现很多问题。

解决方法:

方法1:修改 php.ini 配置文件 error_reporting 设置:

  1. 找到 error_reporting = E_ALL
  2. 修改为 error_reporting = E_ALL & ~E_NOTICE

原理:减弱PHP的敏感程度,使其遇到这种问题不报错。(不推荐这种方式,会导致你错误的语法继续出错)

方法2:在PHP文件头部加入以下代码

<?php
  ini_set("error_reporting","E_ALL & ~E_NOTICE");
?>

同样也可以解决问题,但同样不推荐,这个方法。

方法3:修正你的语法,让你的代码更规范!!!


附录

Windows 2008 R2 IIS角色安装方法

Windows 2008 R2是服务器版本,所以安装IIS7时和非服务器版有些不同,需要使用角色系统安装

第一步:安装IIS

首先进入”控制面板=>打开或关闭Windows功能“

服务器版本进入的是服务器管理器,我们需要进入【角色】并添加角色来增加IIS功能

进入引导页,点击”下一步“

打勾”Web 服务器(IIS)“,点击下一步

一路下一步,记得把 CGI 勾选上,不要勾选 ISAPI

等待安装过程

最后显示”安装成功 “,即大功告成。

Windows 10:MySQL my.ini 与 Windows7 不通用

Windows 7/8/10/2008R2 都使用了IIS7,使用及安装的方法几乎一致,但因为微软的老毛病,系统不同的情况下,Bug也会不同,这里大叔记录了一些安装其他系统时遇到一些情况记录。

MySQL的 my.ini 文件,各个系统之间不能通用,所以在安装时,无法直接把Windows7的MySQL直接移植过去,大叔就重写了 my.ini 就可以正常使用了。

[WinMySQLAdmin]
Server="C:/Users/Administrator/***/***/***/mysql-5.7.16/bin/mysqld.exe"
[client]
no-beep
# pipe
# socket=mysql
port=3306
[mysql]
default-character-set=utf8 # For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
explicit_defaults_for_timestamp = TRUE # Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 2G # Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin # These are commonly set, remove the # and set as required. #basedir="C:\mysql-5.7.11-win32\"
basedir = "C:\Users\Administrator\***\***\***\mysql-5.7.16\"
#datadir="C:\mysql-5.7.11-win32\data\"
datadir = "C:\Users\Administrator\***\***\***\mysql-5.7.16\data\" port=3306
server_id=1 general-log=0
general_log_file="mysql_general.log"
slow-query-log=1
slow_query_log_file="mysql_slow_query.log"
long_query_time=10
log-error="mysql_error_log.err"
default-storage-engine=INNODB
max_connections=1024
query_cache_size=128M
key_buffer_size=128M
innodb_flush_log_at_trx_commit=1
innodb_thread_concurrency=128
innodb_autoextend_increment=128M
tmp_table_size=128M # Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
character-set-server=utf8
innodb_flush_method=normal

PHP环境配置:Windows7+IIS7+PHP+MySQL - 适用于(2008 R2 / 8 / 10)的更多相关文章

  1. windows 7 下快速搭建php环境(windows7+IIS7+php+mysql)

    原文:windows 7 下快速搭建php环境(windows7+IIS7+php+mysql) 1).采用理由: 优点:最大化的桌面图形化操作系统,可维护性优秀.基于IIS v6.0/v7.0(20 ...

  2. mac上搭建mysql环境配置和Navicat连接mysql

    mac上搭建mysql环境配置 1.下载mysql for mac: https://downloads.mysql.com/archives/community/ 注意:mysql版本要和你的MAC ...

  3. Windws Server 2008 R2 WEB环境配置之IIS7/IIS7.5+FastCGI+PHP 5.6.4+MYSQL+phpMyAdmin

    本篇为WEB环境配置的汇总篇,其中PHP以FASTCGI方式来运行,这种方式性能更高.经过配置后,我们的服务器将同时可以运行PHP和.NET的程序,属称全能服务器.所有配置可以根据自身实际需要进行增减 ...

  4. IIS7.0 Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站

    配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型: 64 位操作系统 了解HTTPS 为什么需要 HTTPS ? ...

  5. [转]windows 7 下快速搭建php环境(windows7+IIS7+php+mysql)

    转贴:http://apps.hi.baidu.com/share/detail/10406992 (1).采用理由: 优点:最大化的桌面图形化操作系统,可维护性优秀.基于IIS v6.0/v7.0( ...

  6. Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)

    简介:Windbg双机调试内核.驱动 下载软件: 下载Windbg(GRMWDK_EN_7600_1.ISO) 下载VirtualBox 5.2/VMware 12 一.安装WDK,这里要提一点的是D ...

  7. 云服务器基本环境配置(php5.6+mysql+nginx)

    1.安装nginx sudo apt-get install nginx nginx 基本配置 server{ listen ; server_name www.xxxxxx.cn; root /va ...

  8. 大数据学习之路——环境配置(2)——mysql 在linux 系统上安装配置

    1.安装参考网址: https://blog.csdn.net/IronWring_Fly/article/details/103637801   设置新秘密: mysqladmin -u root ...

  9. 修改 sql server 2008R2的端口,配置防火墙允许远程访问SQL Server 2008 R2

    1.先修改 sql server 2008R2的端口号吧,1433经常成为别人入侵的端口,在sql server 配置管理器 -->sql server 网络配置-->MSSQLSERVE ...

随机推荐

  1. Quick Easy FTP Server FTP工具文件传输使用

    1 工具配置 2 linux 下ftp命令上传和下载文件到FTP_DIR目录 1 ftp 172.16.18.292 输入用户名3 输入密码 4 ls或dir 查看目录及文件  lcd进入本地目录  ...

  2. Qt 日志输出文件

    在Qt开发过程当中经常使用qDebug等一些输出来调试程序,但是到了正式发布的时候,都会被注释或者删除,采用日志输出来代替.     做过项目的童鞋可能都使用过日志功能,以便有异常错误能够快速跟踪.定 ...

  3. 生命不息学习不止,前端js学习笔记(一)

    引言 从毕业到年已经整整7年,期间一直从事.net开发做c/s从 c# 转到 wpf 而后又开始做b/s 用silverlight,从最开始的arcgis engine 到后来的silverlight ...

  4. Java基础之this关键字的作用

    this关键字主要存在三种应用 1.this调用本类中的属性,也就是说调用类中的成员变量: 2.this调用本类中的其他方法: 3.this调用本类中的其他构造方法,调用时要放在构造方法的首行,否则会 ...

  5. 如何在 Azure 中的 Linux 经典虚拟机上设置终结点

    在 Azure 中使用经典部署模型创建的所有 Linux 虚拟机都可以通过专用网络通道与同一云服务或虚拟网络中的其他虚拟机自动通信. 但是,Internet 或其他虚拟网络中的计算机需要终结点将入站网 ...

  6. python多进程与协程

    1.进程的概念 什么是进程->CPU在同一时刻只能处理一个任务,只是因为cpu执行速度很快. cpu在各个任务之间来回的进行切换. 进程的概念:正在进行的一个过程或者说一个任务,而负责执行任务的 ...

  7. 一、WPF 2个datagrid之间同步进度条

    页面代码 <Grid DockPanel.Dock="Left" Width="400"> <DataGrid Name="dgSo ...

  8. tree 向上查找(更新删除后页面的数据)

    需求 : 根据选择的id,需要找到一整条tree,id以及id数据的子集都已被删除(向下查找-----上一篇笔记),此时需要更新页面的数据(向上查找) //知道最底层的节点的id,查找满足id的整个t ...

  9. July 03rd 2017 Week 27th Monday

    Even if you are on the right track, you will get run over if you just sit there. 即使你处于正确的轨道上,但如果你只是坐 ...

  10. Python迭代(入门8)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6407980.html 本文出自:[Edwin博客园] Python迭代 1. 什么是迭代 注意: 集合是指包 ...