WARNING: file_put_contents(): open_basedir restriction in effect. File(你要写入文件的路径) is not within the allowed path(s)

来源:IT星空
访问量:106
发布日期:2023-12-12

在用php的file_put_contents()函数向文件里写入内容时报如下警告信息:
WARNING: file_put_contents(): open_basedir restriction in effect. File(/upload/qrcode/38.jpg) is not within the allowed path(s): (/www/wwwroot/abcd.cn/:/tmp/) in /www/wwwroot/abcd.cn/Article.php on line 99
上面警告翻译成汉语的意思大概是:你试图在/upload/qrcode/38.jpg路径下写入文件,但这个路径不在open_basedir允许的路径/www/wwwroot/abcd.cn/和/tmp/之内。
这个错误是由于PHP的open_basedir设置导致的。open_basedir是一个PHP配置选项,它限制了PHP可以打开文件的目录。

要解决这个问题,需要修改open_basedir的设置,将你的文件保存路径添加到open_basedir的设置中。以下是修改open_basedir的几种方法

1、修改php.ini文件:找到open_basedir这一行,将你的文件保存路径添加到该设置中。例如,如果你的php.ini文件中的open_basedir设置如下:

open_basedir = "/www/wwwroot/abcd.cn/:/tmp/"

你可以将其修改为:

open_basedir = "/www/wwwroot/abcd.cn/:/tmp/:/upload/qrcode/"

然后,你需要重启你的web服务器以使更改生效。

2、修改Apache或Nginx的配置文件:如果你的服务器使用的是Apache或Nginx,你可以在相应的虚拟主机配置文件中修改open_basedir设置。具体的修改方法取决于你的服务器配置。
3、修改user.ini文件:在你的项目根目录下找到user.ini文件,搜索open_basedir,将你的文件保存路径添加到该设置中,然后重新启动web服务器即可生效(此方法特别适合宝塔面板用户)。