在iis上配置think php上传文件时报错“is not within the allowed path“

上传文件时首先报了错“找不到临时文件夹!”,从字面意思理解就是没有设置临时文件夹的路径。

找到php安装路径下的php.ini, 找到里面的upload_tmp_dir,如果前面有;注释掉了,把;删除,填上临时文件夹路径

upload_tmp_dir = "C:/windows/temp"

IIS重启一下程序池,上传文件,这次报了

open_basedir restriction in effect. File(C:/windows/temp/xxxx/) is not within the allowed path(s): (/xxxx/xxx) 

百度搜索了一下,找到的文章都是说要在php.ini里面的open_basedir里写上路径C:/windows/temp, 但是我的php.ini里面的open_basedir是注释掉的,open_basedir的作用是限制应用只能有访问所设置的目录的权限, 如果open_basedir是被注释的,那就说明这里根本没有限制目录访问权限啊!

折腾了几个小时,一直没有找到答案。最后找到一篇文章,说open_basedir可以在多个地方设置,还可以在项目根目录的.user.ini文件里设置,我就想,我的项目是不是这种情况呢?

找到我的项目目录的public文件夹,public文件夹是think php项目的web服务的根路径,果然这里有一个.user.ini文件, 打开一看,果然里面配置了open_basedir,在里面加入C:/windows/temp/,保存,重启iis,可以正常上传了!

open_basedir="E:/PhpProjects/xxx;C:/Windows/temp/"

参考链接:

PHP防跨站之open_basedir目录设置

你可能感兴趣的:(PHP,php,开发语言)