php访问项目外文件

作者: 怀老师 | 来源:发表于2020-05-21 22:12 被阅读0次

    前言:docker中做日志服务,因为镜像会随build消失,日志如果在项目里,也会消失,临时解决方法,把日志写在项目外的根目录下的logs文件夹中,挂载出来,结果死活写不进。

    以下是网上搜的19个关键字,解决办法随着搜索的逻辑一点点出来的

    1. php 无法写入非项目目录下的文件
    2. php 写项目外的目录
    3. php怎么访问本地根目录外的文件
    4. php读取站外目录
    5. php 如何访问网站根目录以外的文件
    6. php可以访问/tmp
    7. php 日志文件写入项目外
    8. php访问项目外文件
    9. php 写入项目外的文件夹
    10. php 项目外文件夹的权限
    11. linux下 php访问项目外文件夹
    12. nginx open_basedir不生效
    13. php设置open_basedir,重启服务后不生效
    14. lnmp中遇到open_basedir配置无效问题
    15. “message”: “opendir(): open_basedir restriction in effect. File
    16. File(/) is not within the allowed pat
    17. LNMP下防跨站、跨目录安全设置
    18. php 如何进行环境隔离
    19. laravel日志写到项目外

    从不报错到报错

    有的时候,不报错才是最难的,首先,文件写不进,肯定有异常,异常不显示,肯定是关闭了报错信息。

    ini_set('error_reporting',E_ALL);ini_set('display_errors',1);
    先把报错打印出来。

    从nginx权限开始

    接受参数的第一步是nginx提供服务的80端口,是否是nginx用户所在用户组没有权限呢?查看nginx.conf,发现一切正常,查看fastcgi.conf,最底部有PHP的配置,fastcgi_param PHP_ADMIN_VALUE "open_basedir=/logsa/";。前面加个#号注釋掉,继续。

    文件夹是否有写权限

    chmod 777 /logs,这个权限安排的明明白白。

    php.ini配置(解决方法)

    [PATH=/home/www/shop] open_basedir=/home/www/shop/:/tmp/:/logs/
    两种任选一种,上面是绝对路径,下面是host映射
    [HOST=dianpu.cn] open_basedir=/home/www/shop/:/tmp/:/logs/
    
    

    重启后解决。

    难点在2个,1是很久不开debug了,2是我用的环境是docker,给排查增加了一层难度。刚开始还以为是挂载的问题呢。其实docker就是一个独立的系统,路径就是/home/root之类的。windows下的C:\D:\在docker里写入,肯定是not found。

    相关文章

      网友评论

        本文标题:php访问项目外文件

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