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