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

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

admin2小时前技术分享10

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” 的相关文章

thinkphp等框架开发中容易忽略的xss攻击及应对XSS攻击方法

thinkphp等框架开发中容易忽略的xss攻击及应对XSS攻击方法

虽然说现在的web开发框架都是挺成熟的框架,在性能、安全等方面都有比较好的表现,但问题往往出现在业务逻辑上,如上周我再公司发现的一个跨站脚本攻击,(通常公司是这么过滤的,max(0,$_GET[‘a’])、strip_tags($_GET[…

解决 SVN Skipped 'xxx' -- Node remains in conflict

更新命令:svn up提示代码:意思就是说 ,这个文件冲突了,你要解决下Updating '.': Skipped 'data/config.php' -- …

系统小技巧:微软版“Ghost” Windows FFU 系统安装还原

系统小技巧:微软版“Ghost” Windows FFU 系统安装还原

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

VirtualXposed 不支持32位应用 32位无法安装问题解决办法

VirtualXposed 不支持32位应用 32位无法安装问题解决办法

VirtualXposed 是基于VirtualApp 和 epic 在非ROOT环境下运行Xposed模块的实现(支持5.0~10.0)。与 Xposed 相比,目前 VirtualXposed 有…

微软Windows 10升级密钥(例如家庭版升级为企业版) 不能用于激活系统

微软Windows 10升级密钥(例如家庭版升级为企业版) 不能用于激活系统

下面的密钥,是微软官方提供的,仅能用于Windows10系统版本的升级,比如从家庭版升级为专业版、专业版升级为企业版等。升级密钥不能用于激活系统,激活需要KMS或者数字权利,由于涉及到版权问题,在此不宜分享,请大家自行查找激活相关的内容。准…

抢先体验太阳谷!20H1、20H2、21H1替换“Dev版新图标”

尽量不要替换shell32.dll.mun和zipfldr.dll.mun,这两老哥可能会带来无法预测的风险!不解除被替换文件的硬链接,已确定会导致无法安装质量更新!(详见H大测评)单替换imageres.dll.mun新图标覆盖率基本可达…

发表评论

访客

看不清,换一张

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