本文转自:http://marsren.blog.51cto.com/116511/41199/

在Windows Server 2003的IIS6下配置ISAPI方式的PHP,配置方法是,在IIS的“WEB服务扩展”中,添加一个新的WEB服务扩展,程序后缀为PHP,ISAPI程序为php5isapi.dll,然后再我的电脑->属性->高级->“环境变量”-“系统变量”中增加变量名PHPRC,数值为php.ini的路径,在Internet信息服务管理器中,选择网站或应用程序的根目录,打开目录属性页(右键选择“属性”),再选择“主目录”。点击“配置”按钮,选择“映射”Tab页。点击“添加...”,在“可执行文件”设为: c:\php\php5isapi.dll,扩展名设为.php,选择“确认文件是否存在”,然后“确定”保存设置。重启服务器即可完成PHP的配置。

以上红色部分不用做,因为用ISAPI配PHP,不读系统变量(CGI方式才读),相关权限设置如下:
<网页所在文件夹配置“IUSR_***”的读权限,如果要写的就给修改权限
PHP文件所在文件夹配置“NETWORK SERVICE”和“IUSR_***”的读权限。
php.ini文件给“NETWORK SERVICE”读权限
考到SYSTEM32目录的DLL文件要给“IUSR_**”的读取和运行权限

解压缩 PHP 二进制压缩包到 D:\php 目录下
  然后打开“我的电脑”->“属性”->“高级”->“环境变量”->“系统变量”->“path”,编辑其值,在前面增加下面的路径地
址:
 ;D:\php;D:\php\ext(注意前面的分号)

在用IIS整合php时,有两种方式:ISAPI与CGI模式,这两种方式,我们都可以看到phpinfo页面,但是使用ISAPI模式,无法读取环境变量,所以通过环境变量PHPRC设置的php.ini路径无法找到。使用CGI就可以,这样就不必把好多文件拷到系统文件下。

配置文件(PHP 3中是php3.ini,自PHP 4起是php.ini)在PHP启动时被读取。对于服务器模块版本的PHP,仅在
web服务器启动时读取一次。对于CGI和CLI版本,每次调用都会读取。
php.ini的搜索路径如下(按顺序):
* SAPI模块所指定的位置(Apache2中的PHPIniDir指令,CGI和CLI中的-c命令行选项,NSAPI
中的php_ini参数,THTTPD中的PHP_INI_PATH环境变量)
*HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath(Windows注册表位置)
*PHPRC环境变量
*当前工作目录(对于CLI)
*web服务器目录(对于SAPI模块)或PHP所在目录(Windows下其它情况)
*Windows目录(C:\windows或C:\winnt),或--with-config-file-path编译时选项指定的位置
   
我在Server2003+php4的环境下遇见了这个问题,解决的方法是在前面写PATH环境变量的时候,添加一个PHPRC,指向x:\php4\php.ini,重新启动即可,如果实在还是不行的,最后还有一招就是安装zend,php加速器,因为安装zend的时候,会指定php.ini的路径,也会指定所使用的服务器是IIS还是Apache,起本质是对注册表做了修改,但是我不知道修改了哪个位置,所以我在上面的操作还是无效的情况下,最后安装Zend,终于成功解决问题了。

  将 php.ini-dist 或 php.ini-recommended 复制到 C:\Windows 目录下,并改名为 php.ini
一般正式发布网站的服务器用php.ini-recommended 安全性高
而作为调试用的服务器用php.ini-dist 更好
当然一般情况下,这个 php.ini 还是需要根据实际情况来修改的。
  下面来介绍一下几个必要的修改选项: 
复制libmysql.dll到System32目录
  extension_dir = "D:\php\ext"
  这个是 PHP 扩展所放置的目录,请确保跟你实际安装的目录相同。
设置正确的时区:
找到“date.timezone”设置成:date.timezone = PRC
以下操作选择性的打开或关闭PHP扩展
  extension=php_mssql.dll
  extension=php_mysql.dll
   上面这些,开头没有加分号的是打开的扩展,加了分号的是没有打开的扩展。
  session.save_path = c:\sessions
  这个是 session 文件默认保存的目录,这个目录必须是一个存在的目录,不然默认的 session 功能会无效。我这里设置的是一个 ramdisk 上的一个目录。将 session.save_path 设置在 ramdisk 上可以加快 session 处理的速度。如果你没有安装 ramdisk,你可以把它指定到其他盘的任何一个目录下,如 C:\sessions 目录、C:\Windows\Temp 目录等。
  OK,基本工作作完了,现在该配置 IIS 了。
  打开“ Internet 信息服务(IIS)管理器”,在“ Web 服务扩展”里,选择“添加一个新的 Web 服务扩展”,扩展名可填写
“PHP ISAPI 扩展”,要求的文件选择:D:\php\php5isapi.dll(如果安装的是 PHP4,则此处是 C:\php\sapi\php4isapi.dll
,下同),并设置扩展状态为允许。
  打开“网站”->“属性”->“ISAPI 筛选器”->“添加”,筛选器名称可填写“PHP”,可执行文件仍然选择
D:\php\php5isapi.dll。
  打开“网站”->“属性”->“主目录”->“应用程序设置”->“配置”->“应用程序扩展”->“添加”,可执行文件还是选择
<d:\php\php5isapi.dll。扩展名填写“.php”,动作限制为“head,get,post”。
  打开“网站”->“属性”->“文档”->“启用默认内容文档”->“添加”,可以将 index.php 添加为默认内容文档。
  然后选择“服务器机器名”->“所有任务”->“重新启动 IIS”来重启 IIS。
  测试
  在默认网站发布目录下,建立一个测试页面:
  下载:phptest.php
  phpinfo();
  ?>
  如果打开这个页面能够看到 php 安装配置信息,就算是安装成功了。
  如果想要更优化的执行 php 程序,可以安装 ZendOptimizer-2.6.0-Windows-i386.exe ,这个东西安装非常简单,这里就不介
绍了。
  升级
  现在升级就非常简单了。只需要将新版本的 PHP 二进制压缩包下载下来,将原来的 D:\php 目录删除,将新版本解压缩到
<d:\php body="" 目录中复制任何文件。是不是很方便啊?<="" system32="" 就可以了。不需要修改任何配置,也不需要往="" iis="" 目录中,然后重新启动一下="">
IIS php筛选器php5isapi.dll加载失败

原因:服务器做了安全设置,把d:\php的everyone权限去掉了,IIS自然没法加载php5isapi.dll。 
解决办法:d:\php目录加上everyone用户 设置权限为:只读就可以了

我所碰到两个最难的地方就是:php5isapi.dll未加载和无法正常启动MySQL,现在分享我的解决方案。

【php5isapi.dll未加载】: 
IIS上设置之后,也开启了WEB服务扩展中的“所有未知的ISAPI扩展”和“Active server pages”两项,但回到ISAPI筛选器中写入的php5isapi.dll要么就是“状态:未知”(无图标),要么就是“状态:未启动”(红色向下箭头图标)。 
解决办法: 
1.首先确定权限的限制是由两部分造成的:系统文件权限以及服务器扩展权限,首先来到这个ISAPI链接库文件所在的地方,之后给予这个文件EveryOne的完全控制权限(你也可以选择读取+写入+执行的权限组合)。 
2.解决服务器扩展权限:来到IIS6.0的“服务器扩展”设置页面,如果你想图省事,可以直接点击“允许所有的未知ISAPI”的按钮,但我并不推荐这样做,这样太不安全了!我们在此应当添加一个新的服务器扩展,扩展名你可以随便填,文件就选择到那个ISAPI链接库文件上,然后勾选“将状态设置为允许”后,保存。 
3.为了使设置生效,请重启系统,重启后你的ISAPI扩展就可以正常加载了!

【无法正常启动MySQL】 
一般的原因都是以前安装过,现在升级或者是在控制面板里卸载后重新安装。升级的话就不提了,一般都是my.ini造成的。对新人来说最麻烦的原来没有卸载干净,现在重装mysql后造成在windows服务里无法正常启动项目,错误提示:1067。 
要完全清除mysql有五个步骤:(我的系统是2003 server,请注意!) 
1. 先不要急着到控制面板里卸载。cmd里进入mysql下的bin目录,执行mysqld-nt -remove,提示完成后关闭窗口。 
2. 控制面板卸载。 
3. 我的操作系统是2003 server,所以windows目录下没有my.ini文件,不需要手动清除,只需要把原来安装过的路径文件夹删除,记得是彻底删除,不是移入回收站。 
4. cmd下执行regedit,进入注册表,查找关键字mysql,将系统盘记录的部分全部删除,当然可能有一两个是非系统盘写入项目,无所谓。按F3键可查找下一个,直到全部查找完成。(新人记得备份注册表先!) 
5. 重启。 
基本上上面五个步骤可完全清除,重新安装完成后,在基本的MySQL Server Instance Config Wizard设置里就能启动服务和保存安全设置。 
这是我一个新人碰到1067错误后所总结出来的5点操作,可能看起来很简单,但也许对一些同样是新人的朋友有所帮助。欢迎老鸟指教。

在2003的系统配置中,有些权限的设置不到位会折腾很久,这里分享一些经验出来,方便大家参考同时也供以后自己查阅。 
1、检查目录中的PHP.INI文件权限,并赋予EVERYONE读取权限; 
2、检查目录中PHP5ISAPI.DLL文件权限,并赋予EVERYONE读取权限; 
3、如果上边两步还不能解决问题,请在添加删除程序中系统组件配置里取消IIS的安装,并重新安装一次IIS,再进行PHP的ISAPI模块设置。

一。运行phpmyadmin程序提示“无法载入 mysql 扩展,请检查 PHP 配置”的解决方法如下: 
答: 
没有正确安装Mysql数据库,在系统服务中Mysql相关的服务没有启动 (请认真阅读安装Mysql和php的教程)

二。安装Discuz!论坛时提示“不支持Mysql数据库,无法安装论坛”的解决方法如下: 
答: 
1,在系统的 system32(C:\windows\system32)目录下缺少libmysql.dll文件,解决方法是找到php目录下的libmysql.dll,并将libmysql.dll复制到C:\windows\system32目录中 
2,在C:\windows目录下的php.ini文件中,没有将“;extension=php_mysql.dll”中的前面一个“;”去掉,所以不能使用相应功能,解决方法是打开php.ini文件找到 
;extension=php_mysql.dll 
改成 
extension=php_mysql.dll //去掉前面的;使之生效 
3,Mysql安装目录正确的权限如下: 
system 完全控制 
Mysql安装目录只需要上面两个权限就可以了,其他的用户权限全部删除

重要,还要检查php.ini文件的权限,检查复制到system32里面的php文件的权限,检查php安装目录文件夹的权限,至少要有users默认权限;

C盘WINDOWS目录的TEMP文件夹至少要有USERS组修改级别权限。

强烈建议在新装的标准版2003系统里面配置!先配置环境安装程序,安装程序成功后再做系统安全设置等!

(最后一定要重启服务器)

如果上述均无效,那么:http://www.jb51.net/softs/26224.html
星外PHP5.2.11自动安装包(非星外系统也可以安装) ,比较快速,对于没有对iis配置过php环境的朋友使用,这个版本是安装在c盘的,其实自己安装也是不错的,一般安装在d盘等非系统安装盘。最新的win2003支持较好的是php5.2.12版本,虽然不是最新的也是不错的。 
phpmyadmin报错: 
Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: files (path: ) in D:\f4jgwy\jgwynet\web\pmbba\libraries\session.inc.php on line 75 
解决方法有两种如下: 
1。在报错的文件里的session start();之前加入如下代码:ini_set(‘session.save_handler', ‘files'); 。这种方法适合租用空间的用户使用。 
2。在php.ini文件里,显式指定session的save_path(比如 c:/tmp)然后重启web服务。如果服务器的管理权限属于你,那还是这样改比较方便。 
即取消;session.save_path = "/tmp" 的注释 
原因分析:php5一个安全模式的bug,默认session的save_path是系统的临时目录,这样会要校验权限。

phpMyAdmin - 错误 
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装。 
解决方法: 
1、尝试重启mysql服务即可解决,--无效 
2、找到php5.ini文件,查到 
session.save_path = "D:\xampp\tmp" 
知道session的保存目录,然后到d:\xampp\tmp目录下,把所有文件清空, 
再次进入phpmyadmin,一切正常。----无效 
3、打开我的电脑——系统安装盘(不错的话一般都是C盘)——打开WINDOWS文件夹——找到Temp目录; 
右击打开属性,点到安全选项,如果没有你可以在窗口的上边点开 工具——文件夹选项——查看——将“使用单文件共享(推荐)”前的勾去掉就有了---无效 
4、使用phpinfo函数查看您的php安装情况,并检查Loaded Configuration 该项配置是否正确,如果该项显示为none,

重启服务器或重启IIS后,全部站点都处于停止状态,无法自动启动,需要手工启动。 
解决办法一: 
我的电脑——右键——管理——服务和应用程序——服务。找到: 
IIS Admin Service 
World Wide Web Publishing Service 
修改为“自动”。 
解决办法二: 
服务器是win 2003的操作系统,IIS重启或者服务器重启以后IIS里面的网站服务居然全部停止了,让人郁闷了老半天,把网站一个个手动启动了,苦苦思索不得原因,是不是与装了SERV-U有关系呢? 
若是因为按装了SERV-U7.1.0.2得原因,如何让网站在重启机器后自动运行呢?经查询得知, SERV-U7.1.0.2占用80端口了,进入SERV-U7.1.0.2设置里,关闭自动运行就可以了! 
另外,在本地IIS调试网站时也经常遇到重启IIS后默认网站都停止的情况,可以用命令netstat -anb查看,是不是80端口被占用了,找到占用80端口的进程,把它关闭就可以启动默认网站了。迅雷就是默认的占用80端口的。 
php5isapi.dll 加载失败。数据是错误的。64位windows2003与PHP5不兼容? 
在64位windows的IIS启动对32位IIS的支持: 
最后是1则表示启用对32位的支持,0则表示禁用对32位的支持,当然,这个时候应该是启动,选1。 
然后重启IIS 
net start iisadmin 
net start w3svc 
mysql_connect() 不支持 请检查 mysql 模块是否正确加载 
查看/usr/lib/php/modules/里面根本没有mysql.so 
找到Redhat安装盘,找到Server目录下的 
php-mysql-5.1.6-20.el5.i386.rpm 
php-pdo-5.1.6-20.el5.i386.rpm 
上载,安装: 
rpm -ivh php-pdo-5.1.6-20.el5.i386.rpm 
rpm -ivh php-mysql-5.1.6-20.el5.i386.rpm 
再查看so文件:ls /usr/lib/php/modules/ 
dbase.so ldap.so mysqli.so mysql.so pdo_mysql.so pdo.so pdo_sqlite.so phpcups.so 
附录: 
1、检查apache,mysql,php及其各组件是否正确安装,服务是否已启动。 
2、查看 /usr/lib/php/modules/ 下 dbase.so ldap.so mysqli.so mysql.so pdo_mysql.so 
pdo.so pdo_sqlite.so phpcups.so mysql.so是否存在。 
如果不存在:找到Redhat安装盘,找到Server目录下的 
安装: 
3、在/etc/php.ini中添加 
extension=mysql.so 
4、重启httpd和mysqld 
phpMyAdmin安装后访问出现Warning: require_once(./libraries/common.inc.php)错误的解决办法 
安装好PHPmyAdmin后,在IE里访问时会出现下面的这种错误:

Fatal error: require_once() [function.require]: Failed opening required './libraries/common.lib.php' (include_path='.;C:\php5\pear') in D:\php\phpMyAdmin\index.php on line 36

经过一阵调试终于发现解决方法: 
原来phpMyAdmin的安装目录的上级目录权限不够,这时给上级目录加上IIS匿名User的“读取和运行”权限,再打开phpmyadmin页面,成功! 
[注意事项]: 
1、不要把phpmyadmin解压安装在根目录,因为这样匿名用户就会拥有根目录的权限。

//-----------------------------------------------------------------------------------------------------------------------------------------------------------

PHP:[url]http://www.php.net[/url]
(1)下载后得到php,解压至C:php(自行选择)。
(2)将C:php目录下的所有dll文件(主要是C:phpext下的dll文件)拷到c:Windowssystem32下,覆盖已有的dll文件。
(3)将C:PHP目录下的php.exe、php-win.exe和php.ini-dist三个文件拷到C:Windows下;将php.ini-dist改名为php.ini,然后修改如下部分:
register_globals = Off

将 Off 改成 On ;
extension_dir =
将其路径指到你的PHP目录下的ext目录,如:extension_dir = “C:phpext” ;
;Windows Extensions(需要的项目去掉前面的 ; 号)
;extension=php_gd2.dll 支持GD库
;extension=php_mbstring.dll 不选用PHPMyAadmin会出红色提示
;extension=php_mssql.dll 支持MSSQL
;extension=php_mysql.dll 支持MYSQL
(4)配置 IIS 使其支持 PHP
安装IIS的步骤略去。PHP 支持 CGI 和 ISAPI 两种安装模式,推荐使用 ISAPI 模式。
在“控制面板”的“管理工具”中选择“Internet 服务管理器”,打开 IIS 后停止服务,然后在左侧“你需要支持PHP的Web站点”比如“默认Web站点”上单击右键选择“属性”,在打开的“ Web 站点属性”窗口的“ISAPI 筛选器”标签里找到并点击“添加”按钮,在弹出的“筛选器属性”窗口中的“筛选器名称”栏中输入:PHP ,再将可执行文件指向 php5isapi.dll 所在路径,如:C:phpphp5isapi.dll 。
打开“Web 站点属性”窗口的“主目录”标签,找到并点击“配置”按钮,在弹出的“应用程序配置”窗口中找到并点击“添加”按钮,在弹出的窗口中新增一个扩展名映射,扩展名为 .php ,单击“浏览”将可执行文件指向 php5isapi.dll 所在路径,如:C:phpphp5isapi.dll,然后确定即可。
打开“Web 站点属性”窗口的“文档”标签,找到并点击“添加”按钮,向默认的 Web 站点启动文档列表中添加 index.php 项。您可以将 index.php 升到最高优先级,这样,访问站点时就会首先自动寻找并打开 index.php 文档。
打开“Internet 服务管理器”左边的“WEB服务扩展”中设置:
ISAPI 扩展 允许
Active Server Pages 允许
设置之后,重新启动IIS即可。
(5)配置Windows环境变量
在windows环境变量的path变量中添加 c:\php、c:\php\ext 。
(6)测试配置结果
在 IIS 根目录下新建一个 phpinfo.php ,内容如下:
<? phpinfo(); ?>
打开浏览器,输入:[url]http://localhost/phpinfo.php[/url],将显示当前服务器所支持 PHP 的全部信息。

让IIS支持PHP的配置步骤的更多相关文章

  1. WindowsServer2003中IIS支持php的配置

    1.安装MySQL(没有特殊说明的就按照默认安装)选择 Custom 自定义安装点击"Change"更改 MySQL 安装目录(自定义)其他按照默认的下一步就可以 安装完成后会自动 ...

  2. 配置iis支持json解析,配置ssi

    配置json解析: 添加mime:*.json  类型 text/json 安装iis应用程序开发中的asp功能 添加处理程序映射: 添加脚本映射 请求路径:*.json 可执行文件:C:\Windo ...

  3. 配置iis支持.json格式的文件

    配置iis支持.json格式的文件发现要让IIS支持json文件并不是单纯的添加mime这么简单啊,以下是设置方法:一.IIS 6 1. MIME设置:在IIS的站点属性的HTTP头设置里,选MIME ...

  4. 问题:iis配置json;结果:如何配置iis支持.json格式的文件

    如何配置iis支持.json格式的文件 | 浏览:1357 | 更新:2015-04-05 11:00 | 标签:软件 1 2 3 4 5 6 7 分步阅读 现在大家在制作HTM5的一些小场景,小游戏 ...

  5. 01-VS充当IIS的配置步骤

    一. 背景 在实际开发中,经常会遇到需要在线调试,比如:第三方支付的回调.App接口借助PostMan工具测试,需要在代码上直接加断点,来进行调试,VS默认是不支持这种方式,需要手动配置一下,才能达到 ...

  6. 配置IIS支持Json格式

    配置iis支持.json格式的文件 原文地址:http://blog.eroad.info/iis-suport-json/ 在做easyUI的官方示例的时候 有的例子是直接读取的json文件,但是默 ...

  7. IIS支持解析json

      IIS支持解析json 一. windows XP   1. MIME设置: 在IIS的站点属性的HTTP头设置里,选MIME 映射中点击"文件类型"-"新类型&qu ...

  8. 轻松搞定Win8 IIS支持SVC 从而实现IIS寄宿WCF服务

    写在前面 为了尝试在IIS中寄宿WCF服务,需要配置IIS支持SVC命令,于是便有了在DOS命令中用到ServiceModelReg.exe注册svc命令. 坑爹的是注册成功后就开始报错.无奈之下两次 ...

  9. 让服务器iis支持.apk文件下载的设置方法

    随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件 ...

随机推荐

  1. QCheckBox控件

    一个QCheckBox会有2种状态:选中和为选中.它由一个选择框和一个label组成,常常用来表示应用的某些特性是启用或不启用. 在下面的例子中,我们创建了一个选择框,它的状态变化会引起窗口标题的变化 ...

  2. java学习——构造类

    package my_project; public class my_first_class { public static void main(String[] args) { // TODO A ...

  3. VBA文本型数字变成数值

    sub test()with activesheet  .usedrange.numberformatlocal=""  .usedrange=.usedrange.valueen ...

  4. [UE4]Axis Mappings轴映射和动作映射Action Mappings的区别

    这里添加的映射只能在“玩家角色(Character)”的事件蓝图中使用. 从它们设置和蓝图使用界面就能看出他们的区别

  5. [ffmpeg_3.3.2]demuxing_decoding.c

    分析ffmpeg3.3.2的example: 由于ffmpeg文档比较少,而且API变化表较大,所以个人首先从ffmpeg自带的demo开始分析,分析(demuxing_decoding.c) 1:首 ...

  6. Flex工程师面试

    这几天有一家公司需要招聘Flex开发的工程师,要求开发电力行业的WebGIS的电力方面的程序,当时也是被推荐过去的,随后的几天,自己也准备的一下,因为之前接触Flex的主要是开发一些医疗的项目,利用F ...

  7. 中国标准时间改为formatTime格式

    1.toLocaleDateString (根据本地时间把Date 对象的日期部分转换为字符串): var time = new Date(); var formatTime = time.toLoc ...

  8. [Python] numpy.logspace

    numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) starting value  :=  base** ...

  9. mybatis - maven - eclipse 坑爹问题: No suitable driver found for http://maven.apache.org

    坑爹的问题,调查了1天 一直以为是驱动问题,根源却在url上:No suitable driver found for http://maven.apache.org 根源: 1.在jdbc.prop ...

  10. 基于OpenGL编写一个简易的2D渲染框架-06 编写一个粒子系统

    在这篇文章中,我将详细说明如何编写一个简易的粒子系统. 粒子系统可以模拟许多效果,下图便是这次的粒子系统的显示效果.为了方便演示,就弄成了一个动图. 图中,同时显示了 7 种不同粒子效果,看上去效果挺 ...