解决fastadmin报错Warning:putenv() has been disabled for security reasons in/thinkphp/base.php on line 50
fastadmin 出现这个错误的原因是因为使用了ThinkPHP5.0.25版本,使用了putenv()函数,但是系统中禁用了这个函数导致的。ThinkPHP高版本中已经解决了这个问题了。
Warning:putenv() has been disabled for security reasons in/thinkphp/base.php on line 50
知道报错的原因那么就好解决了

一.删除禁用
如果你有服务器的管理权限,可以尝试删除这个函数的禁用步骤如下:
打开php.ini文件。
搜索putenv。
在disable_functions设置中,删除这个函数。
重启php服务。
二.替换putenv
如果你没有服务器管理权限或者不想删除这个函数的禁用,咱们也可以用其它方法替换掉这个函数
修改\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"); } } }修改\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()这样就不会报错了



