核心:给php安装目录赋上users组读与执行权限
环境:新安装服务器,windows2003/iis,windows安装目录C盘的权限设置很严格,很多没有必要的的用户权限都删掉了。
配置php
php文件解压缩到c:\php5;
设置系统变量:path增加c:\php5,新建一个系统变量PHPRC值为c:\php5;
拷一个配置好的php.ini文件到c:\php5;
iis站点里设置php文件映射,新增加isapi.dll的web服务扩展,并设置为启用状态;
重启windows;
然后,运行一个phpinfo.php的测试文件(文件内容为<%php phpinfo(); %>),用以检测安装是否正确。
但很奇怪的是出现“您未被授权查看该页”的错误。突然想起来,要对pho.ini设置web站点用户的读与执行权限,于是赶快给php.ini文件赋iis_web组的读与执行权限。再执行,还是看到“您未被授权查看该页”错误页。单独对iis站点用户赋权限也还是不行。
[注]iis_web组是所有web站点用户的组,没有赋什么特殊权限,只对各自iis站点目录赋相应权限。这也是“最小权限”原则。
好像之前没有遇到这样的问题。仔细分析一下,该站点下的.asp文件,html文件都可以正常运行,但就是php提示没有权限。可以肯定,这里的错误跟iis本身没关系,问题还是在于php配置。
准备一项一项的试。
首先给php.ini赋everyone读与执行的权限,不对。删除该权限(目的:尽量不多赋权限 –安全方面还是要发扬一毛不拔的精神!)
对php5目录赋everyone读与执行权限,运行,正常了,可以看到正常的配置信息。
运行是正常了,但给everyone赋了执行权限,总是感觉不大安心。于是删掉该权限,找“最小权限”。
执行phpinfo.php,还是可以正常显示信息。以为是浏览器缓存,在地址栏里加了个?sdfdsgewf还还是可以正常访问的。原因是模块安装php,php.ini只在启动时读取一次,接下来就不需要了。于是命令行里运行iisreset重启iis,再访问,果然看到“您未被授权查看该页”的消息了。
感觉php运行时,需要使用php5目录下的相关文件,需要有相关权限,于是给users组赋读与执行的权限,这下就好了。看来找到原因了,但具体是user组的哪个用户呢,查看本地用户和组里的users,里面只有如图的三个用户,到用户里找,除aspnet外两个却没有对应,看来这里是windows某个内部用户了,大概无法进一步找下去了,只好收手,保留php安装目录的users组读与执行权限。或许只给aspnet用户赋权限就可以了,但没有试,有兴趣的同学可以试试。要回去吃饭了——其实是要先吃饭再回去,都20:22了!