php以fastCGI的方式运行时文件系统权限问题及解决方法

yipeiwu_com6年前PHP代码库

今天准备将一个php demo放在IIS下运行,网站在IIS下的配置是这样的:

应用程序池是集成模式下的.net framework 2.0(2.0或4.0没什么关系,因为php以fastCGI的方式在跑), 应用程序池标识配置为IIS内置的NETWORKSERVICE, 使用的认证方式为匿名身份验证。

打开本地的网站,访问php页面, 出现了500错误。

好吧,是权限问题,最简单的解决办法是把C:\Users\Administrator\PhpstormProjects\phpDemo的权限设成Everyone, 并允许完全控制:

重新访问php页面,成功了:

上面的方法是够简单,但也太不安全了,平时本地搭个demo这样做没问题,真正上线的时候,这样做迟早出问题的。

于是重新设置,把该目录下的只读权限赋给NETWRORKSERVICE帐号再试一下

不过问题还是没有解决,访问的时候,出现了401错误

错误信息中包括显示登录用户为匿名,检查了网站下的身份验证(再点击 匿名身份验证->编辑),原来网站默认情况下,在登录方法为匿名时,使用的默认登录用户为IUSR(就是我们看到的匿名登录用户了)

那么解决办法就是:

1. 将IUSR设置为C:\Users\Administrator\PhpstormProjects\phpDemo的读权限,类似之前对NETWORKSERVICE的设置。

2. 或选择使用应用程序池标识即可。

经试验,方法1与2都成功。

Note:NETWORKSERVICE在IIS7中隶属于iis_iusers用户组,之前对NETWORKSERVICE的设置也可以改为对iis_iusers的设置,同样也可以解决问题,只是权限被进一步放宽了而已。

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

php pcntl_fork和pcntl_fork 的用法

pcntl_fork()函数就是为当前的进程创建一个子进程。并且先运行父进程,返回的是子进程的PID,肯定大于零。在父进程的代码中可以用pcntl_fork(&$status)暂停父进程...

php判断表是否存在的方法

本文实例讲述了php判断表是否存在的方法。分享给大家供大家参考。具体如下: <?php //方法一 mysql_connect('localhost','root'...

PHP基于phpqrcode类生成二维码的方法详解

PHP基于phpqrcode类生成二维码的方法详解

本文实例讲述了PHP基于phpqrcode类生成二维码的方法。分享给大家供大家参考,具体如下: 使用PHP语言生成二维码,还是挺有难度的,当然调用生成二维码图片的接口(比如:联图网htt...

php中print(),print_r(),echo()的区别详解

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)   print()   &nb...

PHP实现动态获取函数参数的方法示例

本文实例讲述了PHP实现动态获取函数参数的方法。分享给大家供大家参考,具体如下: PHP 在用户自定义函数中支持可变数量的参数列表。其实很简单,只需使用 func_num_args()...