您当前的位置:首页 > 建站知识 > 网站知识

解决IIS+PHP上传图片成功但前端显示不了,报401.3 - Unauthorized

发布时间: 2020-03-26 │ 浏览:3390 

首先要知道401.3是什么意思,然后才好按原因找解决方法。

401.3: 您无权使用您提供的凭据查看此目录或页(由于访问控制列表而导致访问被拒绝)。

原来是目录权限问题,打开站点所在目录,右击目录选【属性】,翻到【安全】页签,加用户【Everyone】:



这步相信大部分人都懂。但轮到我动手时偏偏不行,网页上的401.3还是没有消失。难道我忽略了怎么?或者这个方法本身就无效?或者是PHP的问题?

经过找PHP上传的相关问题,发现php.ini有个参数配置:upload_tmp_dir

我打开php.ini文件,发现upload_tmp_dir前面是打分号的,注释掉没用到。我没配置这个参数,那么PHP会给这个upload_tmp_dir参数赋一个默认值:C:\Windows\Temp

原来执行PHP上传代码时,PHP会把上传的文件传到upload_tmp_dir参数指定的目录,然后再从这个目录把文件移到网站目录。问题就出在移动文件的时候。C:\Windows\Temp目录默认是不给访问站点的用户访问的,从这个目录移走的文件,也会把这个权限带过去。所以就有了新搭建的站点,原图片能显示,新上传的图片就显示不了。

明白了这个原理,我心中就有了方法:把C:\Windows\Temp目录里的安全用户名添加成和站点权限的用户名一致,其中需包含IUSER、IIS_IUSERS和Everyone。两个目录的安全用户名一致后。401.3报错就没有了。