open_basedir php授权目录设置

2021/11/12 12:10:07

本文主要是介绍open_basedir php授权目录设置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

php为了安全性考虑,有一项 open_basedir 的设置。该项配置限制require()访问的路径。 open_basedir
将php所能打开的文件限制在指定的目录树中,包括文件本身。当程序要使用例如fopen()或file_get_contents()打开一个文件时,这个文件的位置将会被检查。当文件在指定的目录树之外,程序将拒绝打开

出现以下错误:
在这里插入图片描述
解决该项问题,需要增加open_basedir配置,具体有以下两种解决办法:

1. 在php.ini中配置。

此项配置针对所有项目

;open_basedir =
  如果发现配置项前是有分号,表明php.ini中没有该设置。
  那就很可能是在 php-fpm 中的 fastcgi.conf中配置了。php-fpm中的配置会覆盖php.ini的配置。

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root:/tmp/:/proc/:/you_web_path";

/you_web_path 是你要添加的让php可以访问的路径。多个路径直接分号隔开

2.项目根目录中通过 .user.ini 进行配置。

此项配置只针对单个项目

step1 : 要使.user.ini生效,要设置php.ini 中的

user_ini.filename = ".user.ini"
user_ini.cache_ttl = 300

关于这两个配置的意义,请看php手册 http://php.net/manual/zh/configuration.file.per-user.php

step2 :注释掉 fastcgi.conf 中的 open_basedir 的配置。

step 3: 在项目根目录 创建 .user.ini文件,写入如下内容

open_basedir=/tmp/:/proc/:/you_web_path

/you_web_path 是你要添加的让php可以访问的路径。多个路径直接分号隔开

step4: 重启一下php-fpm 服务即可。

注:
php-fpm的配置 php_admin_value[*] 会覆盖php.ini中的配置。
如果在lamp架构中浏览器访问php文件的php_info()函数,如果在php-fpm相关配置文件中配置了与php.ini相同的参数,那么local
value和master value都会显示该php-fpm覆盖掉php.ini之后的值。

参考文档:https://www.jianshu.com/p/a862ce3d13fb
http://www.884358.com/open_basedir/



这篇关于open_basedir php授权目录设置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程