让iis支持PHP,ISAPI或CGI,FastCGI配置方法(1/4)
在windows server 2003的iis6下配置isapi方式的php教程,配置方法是,在iis的“web服务扩展”中,添加一个新的web服务扩展,程序后缀为php,isapi程序为php5isapi.dll,然后再我的电脑->属性->高级->“环境变量”-“系统变量”中增加变量名phprc,数值为php.ini的路径,在internet信息服务管理器中,选择网站或应用程序的根目录,打开目录属性页(右键选择“属性”),再选择“主目录”。点击“配置”按钮,选择“映射”tab页。点击“添加...”,在“可执行文件”设为: c:phpphp5isapi.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:phpext(注意前面的分号)
在用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_machinesoftwarephpinifilepath(windows注册表位置)
*phprc环境变量
*当前工作目录(对于cli)
*web服务器目录(对于sapi模块)或php所在目录(windows下其它情况)
*windows目录(c:windows或c:winnt),或--with-config-file-path编译时选项指定的位置
我在server2003+php4的环境下遇见了这个问题,解决的方法是在前面写path环境变量的时候,添加一个phprc,指向x:php4php.ini,重新启动即可,如果实在还是不行的,最后还有一招就是安装zend,php加速器,因为安装zend的时候,会指定php.ini的路径,也会指定所使用的服务器是iis还是apache,起本质是对注册表做了修改,但是我不知道修改了哪个位置,所以我在上面的操作还是无效的情况下,最后安装zend,终于成功解决问题了。
补充:Php教程,apache