标签:basedir 配置 ini php open user
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/
标签:basedir,配置,ini,php,open,user 来源: https://blog.csdn.net/qq_25123887/article/details/121285001
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。