Windows 服务器上传文件 not within the allowed path 的解决办法
楼主昨天刚重装服务器系统,顺便换上了宝塔面板。为了安全起见,我把服务器上的所有网站都取消了“跨站访问”权限(如下图)
今天发现,网站无法进行文件上传(比如说在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” 这个文件后,发现其实已经给了访问权限
那为什么会产生这样的问题呢?于是我又尝试了给 C:\Windows\TEMP加上 everyone 权限,发现还是无法访问。
又百度了许久,尝试了很多办法,都没有得到解决。
正当我准备放弃时,偶然看到一篇教程里的 open_basedir 配置路径都加了双引号,我试着也加上去,重启 IIS 问题终于得到解决!
好了,以上其实都是废话。如果有遇到了这个问题的小伙伴,只要按照以下步骤操作即可解决问题:
1、打开网站的根目录,找到 “.user.ini” 这个文件,在属性里去掉“只读” 的勾选框,应用
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……)
已收到,下个版本会修复这个BUG .user.ini在网站目录下找不到呢
页:
[1]