file_exists():open_basedir报错怎么办

 file_exists(): open_basedir restriction in effect. File(/home/static/images/logo.png) is not within the allowed path(s): (/home/wwwroot/域名:/tmp/:/proc/)

有时候我们可能会遇到file_exists():open_basedir 报错,例如

Message:  file_exists(): open_basedir restriction in effect. File(/home/static/images/logo.png) is not within the allowed path(s): (/home/wwwroot/域名:/tmp/:/proc/)

这个时候我们该如何解决呢 ,下边我们来说下解决方法:

首先我们要知道open_basedir的作用是什么。

open_basedir 可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也
可用符号”.”来代表当前目录,当我们用open_basedir指定的限制时 它实际上限制的是前缀,而不是目录名,若我们限制在指定目录下的话需要用斜线(“/”)来进行结束。
比如: 我们设置”open_basedir = /dir/user”, 那么目录 “/dir/user” 和 “/dir/users”都是 可以访问的。如果只限定在”open_basedir = /dir/user”下我们需要加/来表示结束(”open_basedir = /dir/user/” )。

以上的报错就是路径不允许被访问,我们来说下如何去修改。

1 一般安装宝塔后在目录设置里都会有个防跨站攻击(open_basedir),我们可以将这个关闭,重启后重试一下,一般情况下报错就没有了。

2020082807061622

 

2 是修改php.ini中的配置(如果该设置前有分号;那么说明该选项没有进行配置,我们可以去user.ini文件里进行配置下)

1

 

3  编辑user.ini如果编辑不成功,说明这个文件被锁住修改了。

我们可以在使用linux命令:chattr -i .user.in

i参数的解释是:i   Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件,修改完之后我们需要再执行;

chattr -i .user.ini

还原回去,这样问题就解决啦。

 

补充:

open_basedir也可以同时设置多个目录, 在Windows中用分号分隔目录,在任何其它系统中用
冒号分隔目录。当其作用于Apache模块时,父目录中的open_basedir路径自动被继承。

 

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/4248.html

发表评论

登录后才能评论