快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

使IIS支持PHP,ISAPI或CGI,FastCGI完全配置教程(最新php5.2.13配置方法)

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


配置文件PHP 3中是php3.iniPHP 4起是php.iniPHP启动时被读取。对于服务器模块版本的PHP,仅在
web
服务器启动时读取一次。对于CGICLI版本,每次调用都会读取。

php.ini的搜索路径如下按顺序):
* SAPI模块所指定的位置Apache2中的PHPIniDir指令CGICLI中的-c命令行选项NSAPI
中的php_ini参数THTTPD中的PHP_INI_PATH环境变量

*HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePathWindows注册表位置
*PHPRC环境变量
*当前工作目录对于CLI
*web服务器目录对于SAPI模块PHP所在目录Windows下其它情况
*Windows目录C:\windowsC:\winnt),--with-config-file-path编译时选项指定的位置

我在Server2003+php4的环境下遇见了这个问题,解决的方法是在前面写PATH环境变量的时候,添加一个PHPRC,指向x:\php4\php.ini,重新启动即可,如果实在还是不行的,最后还有一招就是安装zendphp加速器,因为安装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。
  打开“网站”->“属性”->“主目录”->“应用程序设置”->“配置”->“应用程序扩展”->“添加”,可执行文件还是选择
  打开“网站”->“属性”->“文档”->“启用默认内容文档”->“添加”,可以将 index.php 添加为默认内容文档。
  然后选择“服务器机器名”->“所有任务”->“重新启动 IIS”来重启 IIS。
  测试
  在默认网站发布目录下,建立一个测试页面:
  下载:phptest.php
  phpinfo();
  ?>
  如果打开这个页面能够看到 php 安装配置信息,就算是安装成功了。
  如果想要更优化的执行 php 程序,可以安装 ZendOptimizer-2.6.0-Windows-i386.exe ,这个东西安装非常简单,这里就不介
绍了。
  升级
  现在升级就非常简单了。只需要将新版本的 PHP 二进制压缩包下载下来,将原来的 D:\php 目录删除,将新版本解压缩到

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 配置”的解决方法如下:
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论