一聚教程网:一个值得你收藏的教程网站

热门教程

windows服务器iis6+php+mysql的安装配置详解

时间:2022-06-30 18:09:35 编辑:袖梨 来源:一聚教程网

以前都用apache,由于工作需要,要配置iis的php环境,网上找了一些资料,一下就配置好了,其实有了apache+php+mysql的经验,这个就很容易理解了。

 

现在趁热打铁,趁没忘记,把大致步骤总结一下。

 

第一步:下载程序

 

下载“php-5.2.0-win32.zip”,“mysql-noinstall-5.0.22-win32.zip”,百度上面都有。

 

第二步:安装php

 

(1) 把下载的“php-5.2.0-Win32.zip” 复制到D盘,再右键解压缩 php-5.2.0-win32 目录下;

 

(2) 在 D:/php-5.2.0-Win32 文件夹下找到“php.ini-dist”文件后先复制一份作为副本,方便以后出错后还原。然后将复制后的文件更名为“php.ini”;

 

(3) 用记事本打开“php.ini”文件,查找“extension_dir”,再将 extension_dir = "./" 改为 extension_dir = "D:/php-5.2.0-Win32/ext";(注:这里应该用斜杠/而不是反斜杠)。如下图;

 

step1.jpg

 

(4) 接着配置php扩展支持,在php.ini文件中查找到以下行:“;extension=php_mysql.dll”;“;extension=php_gd2.dll”;“;extension=php_mbstring.dll”前面的分号去掉,就表示php支持这些扩展功能了;

 

(5) 保存并关闭php.ini文件;再将其复制到C:/Windows目录下;

 

(6) 在D:/php-5.2.0-Win32文件夹下找到名为php5ts.dll,libmysql.dll的文件,并将其复制到C:/windows/System32文件夹中 (注:IIS处理PHP 5和MYSQL需要该文件)。

 

至此,php安装完毕!

 

第三步:安装配置IIS

 

相信这个大家都不陌生了。

 

(1) 控制面板->添加/删除程序->添加/删除windows组件,勾中IIS即可。如果没有安装盘,可以去网下一个从安装盘中抽取出来的iis包。安装完成后在C盘会有一个Inetpub的文件夹。

 

(2) 在管理工具中打开Internet 信息服务(IIS)管理器,或者在运行对话框中输入“inetmgr”(不包括引号)后确定。

 

(3) 鼠标右键单击左边“Internet信息服务”下面的“网站”,然后选择“属性”,或弹出一个熟悉的“网站 属性”面板,切换到“主目录”选项卡,点击下面的“配置”,会弹出一个“应用程序配置”的框,单击下面的“添加”按钮,最后在弹出的框中的“可执行文件” 定位到“D:/php-5.2.0-Win32/php5isapi.dll”,在“扩展名”的文本框内输入“.php”(注:扩展名前要加点),点击确定。如下图;

 

step2.jpg

 

(4) 鼠标右键单击左边“Internet信息服务”下面的“web服务扩展”,点击“添加一个新的web服务扩展”,然后添加一个新的web扩展程序—输入:PHP ,再将可执行文件指向 php5isapi.dll 所在路径,并设为“允许”,最后点击“确定”(我开始漏掉了这一步导致访问php文件时报403页面无法访问的现象,然后摸索了半天才发现)。如下图;

 

step3.jpg

 

至此,IIS基本配置完毕,最后不要忘了重启iis

 

net stop w3svc

net start w3svc

 

第四步:安装MYSQL

 

这个就不说了,基本上下一步,下一步就搞定了。如果有不太清楚可以去百度一下,图文的教程也很详细。

 

最后一步:测试配置是否成功

 

在iis下新建一个站点,然后在站点目录下新建一个“test.php”文件,往里面写入一句话“”,保存关闭。然后用浏览器访问,如果能打开此网页并出现以下画面则表示配置成功了。慢慢往下滑动网页,如果有一个mysql的选项则说明mysql也安装成功。

 

step4.jpg

 

这个方法是我配置成功了总结出来的,如果有问题给我留言。

环境配置好了我们接着来看

IIS+PHP安全配置

一、php.ini文件变态配置

既然是进行windows下IIS+PHP的安全配置,首先要进行安全设置的就是PHP了,在上篇文章中只对php.ini做了一些必要的设置,使它能解释PHP的脚本,里面还有很多的默认设置是不安全的。

我们首先来了解一些php.ini的基本概念性。设置指令的格式如下:directive = value 指令名(directive)是大小写敏感的!所以"foo=bar"不同于"FOO=bar"。值(value)可以是:

1. 用引号界定的字符串(如:"foo")

2. 一个数字(整数或浮点数,如:0,1,34,-1,33.55)

3. 一个PHP常量(如:E_ALL,M_PI)

4. 一个INI常量(On,Off,none)

5. 一个表达式(如:E_ALL & ~E_NOTICE)

还有另外一个是设置布尔值,1为On就是开启,0为Off就是关闭。php.ini分了很多部分,例如:模块部分,php全局配置,数据库配置,等等。了解了基本概念以后我们就可以开始进行配置了。

设置参数以及注解

1、register_globals

注解:这个配置影响到php如何接收传递过来的参数,说白了register_globals的意思就是注册为全局变量,所以当该参数为值On的时候,传递过来的值会被直接的注册为全局变量直接使用,而当该参数值为Off的时候,我们需要到从特定的数组里去得到它。很多的php漏洞一大部分是因为Register_Globals为On的时候被利用的,所以强烈推荐将这个参数修改成Off,php目前的最高版中此参数都是默认是Off的,如果你用的版本比较老的话一定要修改这里。

2、magic_quotes_gpc

注解:如果你把magic_quotes_gpc设置成了Off,那么php就不会对4种字符' (单引号), " (双引号), (反斜线) 和 空字符进行转义,那这样的话就会造成服务器可能会被非法注入的可能。但是如果你把Magic_quotes_gpc设置成On的话,php就会给$_POST,$_GET,$_COOKIE提交的变量中如果有上面四种字符的话就会加上反斜扛.这样就会大大地提高php的安全性。强烈推荐将Magic_quotes_gpc设置为On。

3、display_errors

注解: php的display_errors参数就是帮助开发者定位和确定这些错误的。可是如果php提供的这些信息被黑客了解到的话,这就不妙了。这对于黑客来说可是非常重要的信息,因为很多时候的渗透都需要知道web目录,例如webshell的写入等等。所以强烈推荐大家把这个参数设置成Off。在上一篇文章当中已经解释过这个参数并设置成Off了,但还是列举出来以示强调

4、safe_mode

注解:就是我们常说的安全模式。php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system()等函数,同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的访问,比如/etc/passwd,但是默认的php.ini是没有打开安全模式的,把它打开。safe_mode = on。

5、open_basedir

注解:使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问不应该访问的文件,一定程度上限制了webshell的危害,一般可以设置为只能访问网站目录(假设网站目录为E:test):open_basedir = E:test

6、disable_functions

注解:使用disable_functions可以限制一些对于系统来说威胁很大的函数。

例如,我们在第一部分中看到的有phpinfo()函数的网页中可以看到关于php的环境变量等。还有可以利用system,exec等函数来执行系统命令等等。推荐过滤的函数如下。disable_functions = phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server。如果对某个函数不了解的话,可以google搜索得到函数的作用,然后来决定您自己的服务器是否禁止掉。

7、com.allow_dcom

注解:Windows平台下的PHP脚本平台存在一个安全漏洞,使得PHP设置即使在安全模式下(safe_mode),仍旧允许攻击者使用COM()函数来创建系统组件来执行任意命令。漏洞出现的原因是由于在安全模式下的PHP平台虽然system();pathru()函数被禁止,但是com.allow_dcom的设置依旧是为true。以至于攻击者可以使用COM()函数创建系统组件对象来运行系统命令。如果是默认的Apache设置或者Web服务器以Loacalsystem权限或Administrators权限运行,攻击者可以使用这个漏洞来提升权限。所以我们必须要关闭掉com.allow_dcom这个参数默认是True,我们需要吧这个参数修改成com.allow_dcom=false。

8、expose_php

注解:这个参数决定是否暴露 PHP 被安装在服务器上。如果这个参数设置为On的话就会把php的版本等泄露出来了。推荐设置为Off。

注意:修改完php.ini以后,必须重新启动IIS,不然你设置的内容不会即时生效

二、IIS的安全配置

IIS的安全设置主要通过两种功能的实现来抛砖引玉,IIS上面的安全配置比较灵活,要学会举一反三。

第一种功能:特定的目录或者网站不能运行PHP。如我们在网站下面新建一个images目录,然后在images目录下面创建一个phpinfo.php的文件,内容就是phpinfo。默认情况下这个目录下面的PHP文件是可以执行的,所以用浏览器打开这个文件可以看到PHP的配置信息,如图1。要达到这个目录下面的PHP文件不能执行有两个方法。

方法一:首先打开IIS信息服务管理器,找到我们的站点并打开,然后找到刚才新建的目录单击左键点属性,如图2,划红线的地方有三个选项,分别是无,纯脚本以及脚本和可执行文件。只要我们选择无,然后单击“确定”按钮既可完成。

 

jquery1387778847625="96">

图1

图2

方法二:利用应用程序池来配置,如图3所示,选中要设置的目录,单击右键选择属性,然后点击划红线的创建,这时就会创建一个和网站名字一样的应用程序池,然后就可以单击配置按钮出现如图4所示画面,把应用程序扩展里面的PHP扩展给去掉最后一直?确定返回。

经过以上两种方法都可以实现特定的目录不能执行PHP但又不影响图片以及其它文件的调用。

图3

图4

第二种功能:给特定的目录上集成windows 2003的身份验证功能,例如网站的后台,如果后台目录是admin,那么给admin目录上集成windows 2003的身份验证以后网站的后台就会有两个验证用户和密码。

第一道防护是服务器上的集成身份验证,就是给服务器上添加一个用户,然后设置一个非常变态的密码。

第二道防护就是网站本身的用户名和密码,当然这两道防护的密码一定不能相同,不然跟没用一样。下面,我们来实现一下这个功能。例如,我们要配置的目录是admin,右键点击admin的属性,如图5所示,我们单击“身份验证和访问控制”下的“编辑”按钮,弹出如图6所示的对话框,我们选择“集成windows身份验证”就可以了,同时去掉“启用匿名”前面的对勾,然后单击“确定”按钮。我们再次访问后台目录就会出现了如图7所示的画面,要求我们输入windows服务器上的用户名和密码。

然后新建一个本地的用户test,然后把他的权限设置为最小的。新建用户过程略。下面讲解如何降低test用户的权限,右键点击“我的电脑”,选择“管理”,弹出“计算机管理”对话框,如图15所示,选择右键单击刚才新建的test用户选择“属性”,我们选择用户“密码永不过期”,然后选择拨入选择拒绝访问点确定,如图8。回到刚才的目录中,我们输入我们新建的用户就可以查看了。

图5

图6

图7

三、web目录的权限设置

在第二部分的时候已经涉及到了权限配置原则,这一部分也没有太多的设置。例如我们的web目录为D:web,只要右键单击选择属性然后选中安全选项卡,只需要在组和用户名称那栏里保留管理员帐号和system以及IIS匿名帐户既可,在权限那栏给管理员和system帐户完全控制的权限,给IIS匿名帐户“读取和运行”、“列出文件夹目录”和“读取”这三个权限就可以了。但是我们的很多网站都会有上传的功能,如果没有写入的权限的话我们网站上的上传功能也就没办法使用了,这个时候我们只要单独将需要上传的目录如D:webimages的IIS匿名帐户添加上写入权限就可以了。

热门栏目