当前位置:论坛首页 > Windows面板 > 讨论

Windows 服务器上传文件 not within the allowed path 的解决办法

发表在 Windows面板2017-7-13 09:21 [复制链接] 2 9085

楼主昨天刚重装服务器系统,顺便换上了宝塔面板。


为了安全起见,我把服务器上的所有网站都取消了“跨站访问”权限(如下图)


TIM截图20170713090256.png

今天发现,网站无法进行文件上传(比如说在wordpress里上传图片提示 http 错误)

开启 php 的详细错误显示后,发现错误的内容是
PHP Warning:  Unknown: open_basedir restriction in effect. File(C:\Windows\TEMP) is not within the allowed path(s): (xxxxx网站目录xxxx) in Unknown on line 0
PHP Warning:  File upload error - unable to create a temporary file in Unknown on line 0
百度了一下,发现原来是取消掉跨站访问权限后,造成无法访问 C:\Windows\TEMP 这个临时文件夹,自然也就无法进行上传。


然而,打开网站根目录的 “.user.ini” 这个文件后,发现其实已经给了访问权限


TIM截图20170713091202.png

那为什么会产生这样的问题呢?于是我又尝试了给 C:\Windows\TEMP  加上 everyone 权限,发现还是无法访问。


又百度了许久,尝试了很多办法,都没有得到解决。


正当我准备放弃时,偶然看到一篇教程里的 open_basedir 配置路径都加了双引号,我试着也加上去,重启 IIS 问题终于得到解决!


好了,以上其实都是废话。如果有遇到了这个问题的小伙伴,只要按照以下步骤操作即可解决问题:


1、打开网站的根目录,找到 .user.ini” 这个文件,在属性里去掉“只读” 的勾选框,应用
TIM截图20170713091638.png

2、用文本编辑器(记事本)打开这个文件,将 “open_basedir=” 的后面一串路径内容用英文的双引号引起来
例如:
修改前: open_basedir=D:/wwwroot/myweb/;D:/BtSoft/WebSoft/temp/session/;C:/Windows/Temp/

修改后: open_basedir="D:/wwwroot/myweb/;D:/BtSoft/WebSoft/temp/session/;C:/Windows/Temp/"


3、保存,然后再给这个文件加上只读。


4、重启 IIS,问题解决!




(这应该是 宝塔 的一个 BUG……)
使用道具 举报 只看该作者 回复
发表于 2017-7-13 10:37:26 | 显示全部楼层
已收到,下个版本会修复这个BUG
使用道具 举报 回复 支持 1 反对 0
发表于 2017-11-27 16:23:29 | 显示全部楼层
.user.ini  在网站目录下找不到呢   
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表