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

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

admin6个月前 (02-11)技术分享518

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

系统小技巧:微软版“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  * 补…

php Aes 加密模式ECB填充pkcs5padding base64

最近做支付项目用到了aes加密不过试了好多办法总是和官方给出的结果不一样,找了很久终于找到了测试结果同 http://tool.chacuo.net/cryptaes/ <?php /**  * [Aes&nb…

百度云网盘高速下载方法[测试可用]

百度云网盘高速下载方法[测试可用]

大前提这是一个油猴脚本,安装脚本之前,必须先安装油猴浏览器扩展(如已安装则跳过):【第一步】下载油猴 --> 如有提示安装,则直接安装即可,否则继续执行第二步【第二步】安装油猴 --> 参考其中章节:&nbs…

全世界最快dns分享 Public DNS Server List

偶然发现一个共享全世界最快dns的网站,当然也包含中国了https://public-dns.info/ 中国https://public-dns.info/nameserver/cn.html…

redis 设置过期Key 的 maxmemory-policy 六种方式

平时会用到redis 当缓存过多时会遇到下面的报错OOM command not allowed when used memory > 'maxmemory'这说明redis的缓存满了我们可以通过修改过期策略来修改cd…

发表评论

访客

看不清,换一张

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