美文网首页
php项目跨路径无法访问解决笔记!

php项目跨路径无法访问解决笔记!

作者: DragonersLi | 来源:发表于2019-11-12 10:51 被阅读0次
    lnmp安装完成,项目上传配置好域名和数据库。却无法访问,打开一片空白。
    打开/usr/local/php/etc/php.ini,开启display_errors = On,然后看到原因如下:
    Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/youmi/thinkphp/start.php) is not within the allowed path(s): (/home/wwwroot/youmi/public/:/tmp/:/proc/) in /home/wwwroot/youmi/public/index.php on line 18
    
    Warning: require(/home/wwwroot/youmi/thinkphp/start.php): failed to open stream: Operation not permitted in /home/wwwroot/youmi/public/index.php on line 18
    
    Fatal error: require(): Failed opening required '/home/wwwroot/youmi/public/../thinkphp/start.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/youmi/public/index.php on line 18
    
    
    image.png
    网上说修改.user.ini,无法修改或者删除.user.ini文件
    image.png
     chattr命令用于改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
    a:让文件或目录仅供附加用途。
    b:不更新文件或目录的最后存取时间。
    c:将文件或目录压缩后存放。
    d:将文件或目录排除在倾倒操作之外。
    i:不得任意更动文件或目录。
    s:保密性删除文件或目录。
    S:即时更新文件或目录。
    u:预防以外删除。
    语法chattr[-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]参数
      -R 递归处理,将指定目录下的所有文件及子目录一并处理。
      -v<版本编号> 设置文件或目录版本。
      -V 显示指令执行过程。
      +<属性> 开启文件或目录的该项属性。
      -<属性> 关闭文件或目录的该项属性。 
      =<属性> 指定文件或目录的该项属性。
    
    进入到`.user.ini'所在目录,执行一下 lsattr -a,查看文件下下边包含文件的属性,
    看到`.user.ini'有个'i'属性,代表不得任意更动文件或目录,
    可以去除掉此属性,然后我们再执行删除,就可以顺利删除掉了:
    
    
    chattr -i .user.ini  #关闭属性 
    chmod 666 .user.ini #给写入权限
    删除:rm -rf .user.ini #删除文件 
    修改:chattr +i .user.ini  #修改完毕,开启属性 
    
    
    #修改前
    open_basedir=/home/wwwroot/youmi/:/tmp/:/proc/  
    #修改后
    open_basedir=/home/wwwroot/youmi/public/:/tmp/:/proc/
    
    

    发现以上设置根本没起到作用,使用下面设置后可以访问了

    不只是thinkphp5,其它框架此问题也可用此方法解决:
    修改vim /usr/local/nginx/conf/fastcgi.conf ,注销或者修改open_basedir=NULL
    #注销
    #fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
    #修改
    #fastcgi_param PHP_ADMIN_VALUE "open_basedir=NULL";
    
    image.png
    image.png

    最后别忘了重启服务!

    后期在宝塔下又遇到同样问题,解决笔记!

    php项目是thinkphp5,open_baserdir一直有问题,require失败。
    image.png

    PHP message: PHP Fatal error: require(): Failed opening required

    
    Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/paijinhua/public/../thinkphp/start.php) is not within the allowed path(s): (/www/wwwroot/paijinhua/public/:/tmp/:/proc/) in /www/wwwroot/paijinhua/public/index.php on line 18
    
    Warning: require(/www/wwwroot/paijinhua/public/../thinkphp/start.php): failed to open stream: Operation not permitted in /www/wwwroot/paijinhua/public/index.php on line 18
    
    Fatal error: require(): Failed opening required '/www/wwwroot/paijinhua/public/../thinkphp/start.php' (include_path='.:/www/server/php/56/lib/php') in /www/wwwroot/paijinhua/public/index.php on line 18
    
    关闭防跨站攻击
    image.png
    最后解决方法是在fastcgi.conf文件最后追加一句

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

    相关文章

      网友评论

          本文标题:php项目跨路径无法访问解决笔记!

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