在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 模块所指定的位置 ( Apache 2 中的 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。
打开“网站”->“属性”->“主目录”->“应用程序设置”->“配置”->“应用程序扩展”->“添加”,可执行文件还是选择