【PHP学习笔记】Windows10上搭建一个SqlServer+PHP+IIS的PHP学习环境

一、PHP的安装

php下载

  • 百度搜索关键字:“download php”并根据百度词条上附加的引用链接自行判断选择进入php的官方下载地址
  • 点击“Windows downloads”
  • 下拉菜单选择最新的线程安全版本(我这里选择的是VC15 x64 Thread Safe (2020-Feb-18 22:57:21))
  • 下载Zip文件

php安装和配置

  • 在应用安装文件夹下创建一个用于存放php的文件夹(比如在C:\Program Files或C:\Program Files (x86)文件夹下创建一个名叫php的文件夹)
  • 将下载下来的Zip文件解压,将解压的内容放到之前创建的php文件夹下。
  • 在php文件夹下查找配置文件:php.ini-development
  • 复制一份php.ini-development,并在与php.ini-development同位置粘贴一份php.ini-development,新粘贴文件重命名为php.ini
  • 使用文本编辑器打开php.ini
  • 删除如下内容前的注释符号——“分号”:
extension=bz2
extension=curl
extension=ffi
extension=ftp
extension=fileinfo
extension=gd2
extension=gettext
extension=gmp
extension=intl
extension=imap
extension=ldap
extension=mbstring
extension=exif
extension=mysqli
extension=odbc
extension=openssl
extension=pdo_mysql
extension=pdo_odbc
extension=pdo_pgsql
extension=pdo_sqlite
extension=pgsql
extension=shmop
extension=soap
extension=sockets
extension=sodium
extension=sqlite3
extension=tidy
extension=xmlrpc
extension=xsl
cli_server.color = On

使用编辑器的内容查找功能,可以快速定位到extension=bz2,其他各条内容均在extension=bz2这项附近

  • 配置session.save_path:自己创建一个名叫tmp的文件夹,并将文件夹的全路径设置到session.save_path上 注意:路径应使用双引号包围起来,不然会出现各种奇葩错误
  • 使用管理员权限打开CMD或者power shell,在php路径下输入版本查看命令:"./php.exe -v"
  • 如果能正常显示版本信息则php的入门级安装配置完成;如果出现了除版本信息之外的东西,则跳转到最后阅读关于问题解决的部分。 正常情况下,版本查看命令输出的结果形如:
PHP 7.4.3 (cli) (built: Feb 18 2020 17:29:46) ( ZTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

二、SQL Server 2017的安装

SQL Server 2017下载

  • 百度搜索关键字:“SQL Server 2017” 并根据百度词条上附加的引用链接自行判断选择进入微软的SQL Server 2017官方下载地址(要用其他版本也随你便)
  • 点击立即试用跳转到下载页面
  • 选择Developer版本下载(免费版本中,这个版本功能要多一些)
  • 4.下载完成后,你将得到一个文件:SQLServer2017-x64-CHS-Dev.iso

SQL Server 2017安装

  • 右键该文件,选择装载
  • 双击运行setup.exe
  • 左边有几个选项:“计划”、“安装”、……;选择“安装”
  • 右边选择“全新SQL Server独立安装或向现有安装添加功能”
  • 选择版本前的自检和更新勾选无所谓,想点就点,不想点就不点。通过点击“下一步”一直进入到版本选择界面
  • 在版本选择界面选择Developer版本后点击下一步(收费版本需要输入对应的激活码,然而我没有激活码,不需要激活码的免费版本中这个Developer版本功能最多)
  • 防火墙警告忽略,直接下一步,其他检查我都是通过的,如果你没能通过的话,你只能自行百度了
  • 选择所要安装的功能:先点击全选,之后再手动取消“机器学习服务(数据库内)”和“机器学习服务(独立)”这两处。【对应的子选项会随着一并被取消点选(为什么要取消这两处,因为我只是要搭建一个简单的php学习环境,暂时用不到机器学习功能,更重要的是:如果选择了这两处,后面的安装过程需要额外下载支持的安装包,而且这额外的安装包下载很慢,下载下来了也不一定能安装上,坑很多)】
  • 中间跳过一系列下一步到检查环节,如果遇到“Polybase要求安装Oracle JRE 7更新51(64位)或更高版本”请自行去安装jdk1.7或jre1.7(如果安装jdk1.7则自动包含安装了jre1.7。我尝试过安装最新版本的Java版本java13,但是然并卵,这个安装程序只认识Java1.7)【Java1.7的安装教程百度一大堆,懒得写了(注意将jre路径添加到path)】
  • 通过自检之后,在身份认证页选择“混合身份认证”(混合身份认证可以使用账号密码登录数据库,如果没有混合身份认证的话就只能同Windows系统认证,这种情况下,未来如果你使用其他操作系统远程登录这个数据库就很麻烦,或者你在php中通过代码连接数据库就也很麻烦)
  • 之后的每个页面唯一需要注意的是:每个页面都要添加一下对应的各种账户(页面上有按钮,点击一下把你的系统用户账户添加上去就行了)
  • 针对SQL Server数据库个人推荐安装的软件:SSMS,请自行百度关键字“SSMS”之后下载。(这个软件的安装就像安装QQ一样无脑点安装下一步就行了)

三、IIS的安装和配置

IIS安装

  • 打开控制面板(在CMD或powershell中输入命令“control”,或者在Windows10的搜索中搜索“控制面板”即可)
  • 点击程序
  • 点击“启用或关闭Windows功能”
  • 勾选相应的选项后确定即可,如下是我所勾选的内容:
    IIS功能选择截图
  • 安装好之后打开浏览器,在地址栏输入“127.0.0.1”查看IIS的展示界面出来没有,如果出来了蓝色的展示页面说明IIS安装没问题了

IIS配置

上面部分完成了IIS的安装,此时的IIS已经能够展示静态页面和asp.net网页了(但是尚不能和php进行沟通),接下来配置IIS使得其能够与php沟通。

  • 打开IIS(通过如下这个图标打开)
    IIS的图标截图
  • 打开之后左侧选中你的主机名,在对应的右侧双击“处理程序映射”如图:
    IIS添加php处理入口截图
  • 在新页面右边栏操作部分:打开“添加模块映射”(注意是第四行模块映射,不是第二行脚本映射)
  • 请求路径填写:“*.php”(双引号内不包含双引号内容)
  • 模块选择:FastCgiModule
  • 可执行文件(可选):将php安装路径添加进去
  • 名称:随便取一个(我取的就是一个“php”)
  • 填完之后点击确定即可

IIS安装配置的结果测试

  • 在IIS左侧选中你的主机,回到主界面
  • 在主界面中双击“默认文档”
  • 在IIS的默认文档中,添加默认文档“index.php”(应保证index.php在默认文档列表的最上面,选中任意一个条目可以在右侧调整排列顺序)
  • 在磁盘的任意位置创建文本文件,并命名为:“index.php”
  • 用文本编辑器打开这个index.php,将如下代码复制进去并保存:
<?php
echo phpinfo();
  • 将这个index.php复制到目录:C:\inetpub\wwwroot下
  • 在浏览器地址栏中输入并访问“127.0.0.1”
  • 如果该页面展示了php的欢迎页,说明IIS与php已经能够正常沟通

四、安装过程中遇到的问题解决过程

  • vcruntime140.dll的问题。在网上搜到了下载vc_redist.x64.exe安装的方式处理,也许这种方式适用于其他人,但是到了我这里没用了。最终我的处理方式是:使用DirectX_Repair_win8_win10.exe修复c++组件得以解决
  • "./php -v"命令在Windows PowerShell中显示的错误提示时中文乱码,解决方法:在控制面板找到区域设置,管理,更改系统区域设置中勾选“UTF-8全球语言支持”
  • 错误提示:
PHP Startup: Unable to load dynamic library 'oci8_12c'
 (tried: C:\php\ext\oci8_12c (找不到指定的模块。),
  C:\php\ext\php_oci8_12c.dll (找不到指定的模块。)) in Unknown on line 0

姑且在php.ini中将extension=oci8_12c用分号注释掉(因为暂时不用Oracle数据库)【这是我在配置php.ini时多余解开了extension=oci8_12c导致的,以后若要使用Oracle数据库的话依然要解开,到时候再解决这个问题】

PHP Startup: Unable to load dynamic library 'pdo_firebird' 
(tried: C:\php\ext\pdo_firebird (找不到指定的模块。),
 C:\php\ext\php_pdo_firebird.dll (找不到指定的模块。)) in Unknown on line 0

依然注释掉指定模块

PHP Startup: Unable to load dynamic library 'pdo_oci' (tried: C:\php\ext\pdo_oci (找不到指定的模块。), C:\php\ext\php_pdo_oci.dll (找不到指定的模块。)) in Unknown on line 0

继续注释

Cannot find module (IP-MIB): At line 0 in (none)

注释snmp

  • Polybase要求安装Oracle JRE 7更新51(64位)或更高版本:安装一了个jdk1.7.0_80解决(jdk8以上安装也没用,就是要7)
  • 登录SQL Server时需要注意的问题:第一次登陆建议使用Windows身份先登录一次防止各种因为电脑系统环境造成的奇葩问题出现影响心情,之后再用账号密码登录。
  • 更改php.ini中timezone没效果问题:设置的值未用双引号引起来

五、测试使用php连接SQL Server

  • 到:https://docs.microsoft.com/en-us/sql/connect/php/getting-started-with-the-php-sql-driver?view=sql-server-2017

  • 下载SQLSRV58.EXE

  • 运行后选中一个自定义文件,用于存储SQLSRV58.EXE解压出来的各类dll文件

  • 在指定的自定义文件夹下有个SQLSRV_Readme.htm,打开后找到对应php版本的两个dll文件

  • 将两个dll文件复制到php的子文件夹ext下

  • 编辑php.ini配置文件,将两个新dll的信息添加(比如我的就是添加了如下两个:)

extension=php_sqlsrv_74_ts_x64.dll
extension=php_pdo_sqlsrv_74_ts_x64.dll

特别地:如果需要安装ODBC可以到:https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017
下载ODBC Driver for SQLServer,我当时下载了msodbcsql_17.5.1.1_x64.msi,但是当我运行这个msi文件时提示已经有低版本的ODBC Driver(我猜测可能是因为我安装SSMS的时候自动安装了ODBC Driver,所以最终下载下来的这个msi文件的安装被我取消了)

  • 在任意磁盘路径下创建文本文件,并命名为index.php
  • 使用文本编辑器打开这个index.php,并将如下代码复制进去
<?php
       $serverName = "127.0.0.1";
       $connectionInfo = array("Database"=>"数据库名称","UID"=>"登录数据库使用的账号","PWD"=>"账号的密码");
       $conn = sqlsrv_connect($serverName, $connectionInfo);
       if( !$conn ) {
           echo "连接失败了.<br />";
      }else{
           $sql = "SELECT * FROM 数据库中任意表的表名";
           $sqlResult = sqlsrv_query($conn,$sql);
           if($sqlResult === false) die(print_r(sqlsrv_errors(),true));
           while($row = sqlsrv_fetch_array($sqlResult,SQLSRV_FETCH_ASSOC))
           {
               echo $row['第一个表中第一个字段的字段名'],"&nbsp;&nbsp;&nbsp;&nbsp;",$row['表中第二个字段的字段名'],"<br />";
           }
           sqlsrv_free_stmt($sqlResult);
      }
   ?>
  • 接下来将:“数据库名称”、“账号”、“密码”、“表名”、“字段名”根据你SQL Server中所创建的数据库的实际情况进行修改,修改完成之后保存。
  • 保存之后将这个index.php复制到C:\inetpub\wwwroot下,如果提示需要覆盖则进行覆盖。
  • 在正式开始测试之前先测试一下数据库是否能够正常访问:我这里是使用SSMS连接的数据库,在连接数据库成功之后方可进行下一步。此时连接数据库过程中遇到任何奇葩问题请自行百度
  • 完成上述步骤之后,在浏览器中访问127.0.0.1查看页面是否显示了你数据库中指定表内所存储的内容,如果是,则测试通过。
至此,Windows10环境上SQL Server 2017+PHP+IIS的PHP“学习”环境已经搭建完毕
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章