当前位置:首页 > 技术分享

解决fastadmin报错Warning:putenv() has been disabled for security reasons in/thinkphp/base.php on line 50

admin5个月前 (02-11)技术分享469

fastadmin 出现这个错误的原因是因为使用了ThinkPHP5.0.25版本,使用了putenv()函数,但是系统中禁用了这个函数导致的。ThinkPHP高版本中已经解决了这个问题了。

Warning:putenv() has been disabled for security reasons in/thinkphp/base.php on line 50

知道报错的原因那么就好解决了

ScreenShot_2026-02-11_174407_986.png

一.删除禁用

如果你有服务器的管理权限,可以尝试删除这个函数的禁用步骤如下:


  1. 打开php.ini文件。

  2. 搜索putenv。

  3. 在disable_functions设置中,删除这个函数。

  4. 重启php服务。

二.替换putenv

如果你没有服务器管理权限或者不想删除这个函数的禁用,咱们也可以用其它方法替换掉这个函数

  1. 修改\thinkphp\base.php

    if (is_file(ROOT_PATH . '.env')) {
        function put_env($str){
            if(function_exists('putenv') && is_callable('putenv')){
                putenv($str);
            }else{
                $arr = explode('=',$str);
                $_ENV[$arr[0]] = $arr[1];
            }
        }
        
        $env = parse_ini_file(ROOT_PATH . '.env', true);
    
        foreach ($env as $key => $val) {
            $name = ENV_PREFIX . strtoupper($key);
    
            if (is_array($val)) {
                foreach ($val as $k => $v) {
                    $item = $name . '_' . strtoupper($k);
                    put_env("$item=$v");
                }
            } else {
                put_env("$name=$val");
            }
        }
    }
  2. 修改\thinkphp\library\think\Env.php

    public static function get($name, $default = null)
        {
            $full_name = ENV_PREFIX . strtoupper(str_replace('.', '_', $name));
            if(file_exists('putenv') &&  && is_callable('putenv')){
                $result=getenv($full_name);
            }else{
                $result =isset($_ENV[$full_name])?$_ENV[$full_name]:false;
            }
    
            if (false !== $result) {
                if ('false' === $result) {
                    $result = false;
                } elseif ('true' === $result) {
                    $result = true;
                }
    
                return $result;
            }
    
            return $default;
        }

修改这两个地方就是使用$_ENV替换掉put_env()这样就不会报错了

扫描二维码推送至手机访问。

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:https://blog.bitefu.net/post/736.html

分享给朋友:

“解决fastadmin报错Warning:putenv() has been disabled for security reasons in/thinkphp/base.php on line 50” 的相关文章

360浏览器如何禁止切换到兼容模式[本地终极办法]

360浏览器如何禁止切换到兼容模式[本地终极办法]

浏览器内核控制标签meta说明背景介绍由于众所周知的原因,国内的主流浏览器都是双核浏览器:基于Webkit的内核用于常用网站的高速浏览,基于IE的内核主要用于部分网银、政府、办公系统等网站的正常使用。以360浏览器为例,我们优先通过Webk…

微软版Ghost Win10:FFU映像备份和还原

微软版Ghost Win10:FFU映像备份和还原

在日常的维护中,系统的备份和还原是大家经常需要操作的事情。虽然Windows 10已经提供很多的工具,如系统还原、WIM备份/还原,VHD备份等。不过这些工具大多是基于文件的备份/还原。我们以前经常的使用的Ghost则是基于扇区的备份/还原…

centos 配置Let's Encrypt 泛域名https证书

centos 配置Let's Encrypt 泛域名https证书

前言2018年1月份Letsencrypt可以申请泛域名证书,这让我们部署多域名、多站点https省了很多功夫,终于可以不用维护多个域名的https证书。笔者以acme.sh为例,手把手教你配置https证书~本教程适用于centos 6.…

PHP AES加解密 (ECB模式/sha1prng算法/PKCS5Padding和PKCS7Padding补码) ECB 模式不需求设置 iv

php7+ 版本/**  * [AesSecurity aes加密,支持PHP7+]  * 算法模式:ECB  * 密钥长度:128  * 补…

PIP 更换国内安装源linux/windows

pip国内的一些镜像  阿里云 http://mirrors.aliyun.com/pypi/simple/   中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/   豆瓣(…

用apicloud 免费,简单封装一个wap手机网站成android app

用apicloud 免费,简单封装一个wap手机网站成android app

APICloud是国内较早布局低代码开发的平台之一,其发布的低代码效率工具Plus Mode,为IT项目中每个角色提供专业工具,将需求分析、产品原型、UI设计、前端开发、后端开发紧密衔接,并基于行业大数据对前置环节进行复用,最终缩减大量重复…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。