win7 x64 IIS配置PHP+mysql开发环境的几个问题

  • 聚客宝
  • 2021-08-15 15:27:17

第一、PHP的版本问题,


分为x86和64位两个版本,同时还分Non Thread Safe(非线程安全)与Thread Safe(线程安全)两种,前者适用于IIS,后者适用于 Apache;


因为Linux/Unix系统是采用多进程的工作方式,而Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,因为CGI模式建立在多进程的基础之上,而不是多线程。我们在windows上会把PHP配置成以ISAPI的方式来运行,因为ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错,很可能将IIS进程搞崩溃,因此对于IIS来说,CGI模式才是PHP运行的最安全的方式,只不过CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。 


为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。 因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。


第二、PHP的安装


php的安装比较简单,把安装包解压缩,然后拷贝到C盘的根目录下就可以,把文件名修改为php;然后就是如何配置PHP的问题;


配置PHP,就是修改php.ini文件,需要把压缩包中的php.ini-development配置文件重命名为php.ini。然后用记事本打开这个文件,按照需要修改配置这个文件,搭建php的运行环境。

(一)

On windows: 

 extension_dir = "ext"

修改为

On windows: 

extension_dir = "C:/php/ext"


(二)开启相应的扩展库功能(需要搞明白这些库文件的作用)

extension=php_curl.dll

extension=php_gd2.dll

extension=php_mbstring.dll

extension=php_mysql.dll

extension=php_pdo_mysql.dll

extension=php_pdo_odbc.dll

extension=php_xmlrpc.dll

extension=php_mysqli.dll


这些extension之前的分号(;)去除


(三)配置PHP的Session功能

在使用session功能时,我们必须配置session文件在服务器上的保存目录,否则无法使用session,我们需要在Windows 7上新建一个可读写的目录文件夹,此目录最好独立于WEB主程序目录之外,此处我在D盘根目录上建立了phpsessiontmp目录,

然后在php.ini配置文件中找到

session.save_path = "/tmp"

修改为

session.save_path = "D:/phpsessiontmp"


(四)配置PHP的文件上传功能 如何编写PHP文件上传功能?

同session一样,在使用PHP文件上传功能时,我们必须要指定一个临时文件夹以完成文件上传功能,否则文件上传功能会失败,我们仍然需要在Windows 7上建立一个可读写的目录文件夹,此处我在D盘根目录上建立了phpfileuploadtmp目录,

然后在php.ini配置文件中找到

upload_tmp_dir =

修改为

upload_tmp_dir = "D:/phpfileuploadtmp"


(五)修改date.timezone,否则在执行phpinfo时date部分会报错:

Warning: phpinfo() [function.phpinfo]…

我们需要将

date.timezone =

修改为

date.timezone = Asia/Shanghai


注意:配置修改后,一定重启IIS才能生效。


第三、IIS配置对PHP支持


(一)安装好IIS7 安装的时候 要注意三个地方打得勾:CGI、ISAPI扩展、ISAPI筛选器。 注:   CGI  会在IIS7+PHP_5.3.5的环境中用到 ; ISAPI扩展和ISAPI筛选器 用在IIS7+PHP_5.2.17 

(二)将下载回来的php_5.3.5解压到 C:\php目录(也可以放在其他地方,但是后面应该做相应修改)

(三)  添加<模块映射> 

处理程序映射-》添加模块映射(在设置右侧菜单项下部)-》

在弹出的窗口填写:

请求路径:*.php  (注意: 别忘掉“*”星号,这是通配符,否则无法使用)

模块:FastCgiModule(选择) (注意:不要由于疏忽想当然的错误选择CgiModule,导致无法使用)

可执行文件:c:\php\php-cgi.exe

(四) 在网站根目录新建一个phpinfo.php的文本文件 内容为: 

<?php

 phpinfo();

?>

(五) 测试,打开浏览器看结果:localhost/phpinfo.php,如果能看到php的版本信息及环境变量的信息列表。



第四、Mysql的安装


(一)新版的mysql需要 .NET Framework4.0的支持,首先需要下载安装这个组件。


NET Framework: 就是微软Web Services 引擎 有许多程序设计师和使用者,非常渴望有一个完善而且透明清楚的基础架构,来建立WebServices(因特网服务)。.NET Framework 就是为了这个需求,而提供的基础架构。

.NETFramework 提供了应用程序模型及关键技术,让开发人员容易以原有的技术来产生、布署,并可以继续发展具有高安全、高稳定,并具高延展的Web Services。对于.NET Framework 而言,所有的组件都可以成为Web Services,Web Services 只不过是另一种型态的组件罢了。微软将COM 的优点整合进来,它可以不用像COM 那么严谨的来栓锁两个对象,.NET Framework 以松散的方式来栓锁Web Services 这种型态的组件。这样的结果让开发人员非常容易的发展出强而有力的Web 服务组件,提高了整体的安全及可靠性,并且大大的增加系统的延展性。 .NET Framework: 由三个部分组成 .NET Framework 的目的就是要让建立Web Services 以及因特网应用程序的工作变的简单,.NET Framework 包括了三大部分:第一个部分是Common Language Runtime(CLR,所有.NET 程序语言公用的执行时期组件),第二部分是共享对象类别库(提供所有.NET 程序语言所需要的基本对象),第三个部分是重新以组件的方式写成的ASP.NET(旧版本则是以asp.dll提供ASP 网页所需要的对象)。 基本上安装了之后对机器不会有很大的影响 也就是说,是使用.NET编程的必须。


(二)mysql的安装过程比较简单,按照提示默认安装就可以。


第五、phpMyadmin的安装配置


(一)下载程序包解压缩后,放到虚拟目录下,或者单独配置站点也可。


(二)把根目录下的文件config.sample.inc.php修改文件名为config.inc.php;


(三)删除根目录下的文件web.config,或者更换别的名称,否则会导致错误提示:

        错误提示:在唯一密钥属性“name”设置为“php”时,无法添加类型为“add”的重复集合项

(注意:在PHP站点下可能会自动生成web.config文件,删除后可以正常运行站点,否则不行。需要进一步查找相关资料)


(四)运行index.php,可以出现登陆界面,账号 root 密码是安装mysql时自己设定的密码;


(五)出现以下提示的原因


You are using the mysql extension which is deprecated in phpMyAdmin. Please consider installing the mysqli extension.


需要配置php.ini打开 extension=php_mysqli.dll