美文网首页
PHP open_basedir 填坑小计

PHP open_basedir 填坑小计

作者: 非常帅气的昵称吧 | 来源:发表于2018-07-23 18:23 被阅读0次

    日前在做项目时候, 碰见一个奇怪案例, 文件夹A中的一个文件a.php, 要require和A同级的文件夹B中的文件b.php, 大多数客户机器上都没有问题, 只有一个客户无法读取, 报错提示中有open_basedir 简单搜了下 open_basedir实际上就是将PHP所能打开的文件限制在指定的目录树中,包括文件本身。

    具体配置的方式有很多中 

    1.在php.ini 加入

    open_basedir="指定目录"

    2.在程序中使用

    ini_set('open_basedir','指定目录');

    3.在apache的httpd.conf中的Directory配置

    php_admin_value open_basedir"指定目录"

    httpd.conf中的VritualHost

    php_admin_value open_basedir"指定目录"

    4.nginx fastcgi.conf

    fastcgi_param PHP_VALUE"open_basedir=指定目录"

    以上实际上设定的都是整个站点的文件限制, 但是这次遇见的问题是某个站点下的某个文件夹的限制, 又经过一番摸索, 终于完美重现问题了  实际上针对站点下的文件夹权限, 要单独配置  这里就是第五种配置方法了

    5. .user.ini

    在指定文件夹下新建.user.ini文件,

    open_basedir=/Users/x/Desktop/www/wq_test/addons/:/Users/x/Desktop/www/wq_test/data/

    比如在A文件夹下添加此文件后, 那么A下面所有的PHP文件都只能访问/Users/x/Desktop/www/wq_test/addons/或/Users/x/Desktop/www/wq_test/data/下的文件

    注意:

    第五种.user.ini方法 只能用于fastcgi模式  用的mamp pro 默认apache是非fastcgi模式 结果一直没生效, 切换成fastcgi模式就可以了

    .user.ini。它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个要领

    相关文章

      网友评论

          本文标题:PHP open_basedir 填坑小计

          本文链接:https://www.haomeiwen.com/subject/dogjmftx.html