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

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

admin8个月前 (02-11)技术分享622

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

[教程] WTG备份新方法——FFU镜像格式

[教程] WTG备份新方法——FFU镜像格式

FFU(Full Flash Update) 格式是一种基于扇区的磁盘镜像文件格式,默认使用快速哈夫曼压缩(Xpress-Huffman)算法压缩,在捕获和部署时会生成哈希表进行校验,并可以使用DISM修改捕获的镜像。FFU格式很适合WTG…

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

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

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

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

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

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

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

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

遭遇国外ip抓取或攻击怎么办一招解决禁止海外IP访问

遭遇国外ip抓取或攻击怎么办一招解决禁止海外IP访问

究发现很多网站被攻击都是来自海外的肉鸡,所以禁掉海外IP访问网站也是不错的防护手段,而且国内网站几乎很少有国外用户访问,称之为大局域网也不为过。今天主机吧来教大家如何利用域名解析禁止掉海外IP访问网站。绝大多数域名解析服务商都是提供电信联通…

【不忘初心】19041/19042/19043(20H1,20H2,21H1)告别繁琐 一键替换太阳谷图标 一键恢复原版图标 一键恢复文件夹预览

【不忘初心】19041/19042/19043(20H1,20H2,21H1)告别繁琐 一键替换太阳谷图标 一键恢复原版图标 一键恢复文件夹预览

一键替换太阳谷图标,一键恢复原版图标,注意是一键!!!  太阳谷图标确实很好看,很新颖 !论坛也有相关替换教程,有的需要改权限,有的需要PE下替换,有的还得重启,搞不好很容易翻车,有些小白同学只能望梅止渴,今天以上统统告…

发表评论

访客

看不清,换一张

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