117 lines
4.2 KiB
PHP
Raw Normal View History

<?php
/**
* 获取系统信息
* @author yupoxiong<i@yufuping.com>
*/
namespace tools;
use think\Db;
class SystemInfo
{
public static function getSystemInfo(): array
{
$composer = json_decode(file_get_contents(app()->getRootPath() . 'composer.json'), true);
$require_list = [];
$require_dev_list = [];
if (array_key_exists('require', $composer)) {
$require_list = $composer['require'];
}
if (array_key_exists('require-dev', $composer)) {
$require_dev_list = $composer['require-dev'];
}
$user_agent = request()->header('user-agent');
if (false !== stripos($user_agent, 'win')) {
$user_os = 'Windows';
} elseif (false !== stripos($user_agent, 'mac')) {
$user_os = 'MAC';
} elseif (false !== stripos($user_agent, 'linux')) {
$user_os = 'Linux';
} elseif (false !== stripos($user_agent, 'unix')) {
$user_os = 'Unix';
} elseif (false !== stripos($user_agent, 'bsd')) {
$user_os = 'BSD';
} elseif (false !== stripos($user_agent, 'iPad') || false !== stripos($user_agent, 'iPhone')) {
$user_os = 'IOS';
} elseif (false !== stripos($user_agent, 'android')) {
$user_os = 'Android';
} else {
$user_os = 'Other';
}
if (false !== stripos($user_agent, 'MSIE')) {
$user_browser = 'MSIE';
} elseif (false !== stripos($user_agent, 'Firefox')) {
$user_browser = 'Firefox';
} elseif (false !== stripos($user_agent, 'Chrome')) {
$user_browser = 'Chrome';
} elseif (false !== stripos($user_agent, 'Safari')) {
$user_browser = 'Safari';
} elseif (false !== stripos($user_agent, 'Opera')) {
$user_browser = 'Opera';
} else {
$user_browser = 'Other';
}
$user_ip_address = '--';
$user_ip = request()->ip();
$ip_json = @file_get_contents('http://restapi.amap.com/v3/ip?key=36764b698753cbde3ffccda82d040d14&ip=' . $user_ip);
$ip_arr = json_decode($ip_json, true);
if (((int)$ip_arr['status'] === 1) && is_string($ip_arr['province']) && is_string($ip_arr['city'])) {
$user_ip_address = $ip_arr['province'] . ' ' . $ip_arr['city'];
}
$info = [
//服务器系统
'server_os' => PHP_OS,
//服务器ip
'server_ip' => GetHostByName($_SERVER['SERVER_NAME']),
//php版本
'php_version' => PHP_VERSION,
//运行内存限制
'memory_limit' => ini_get('memory_limit'),
//最大文件上传限制
'upload_max_filesize' => ini_get('upload_max_filesize'),
//单次上传数量限制
'max_file_uploads' => ini_get('max_file_uploads'),
//最大post限制
'post_max_size' => ini_get('post_max_size'),
//磁盘剩余容量
'disk_free' => format_size(disk_free_space(app()->getRootPath())),
//ThinkPHP版本
'think_version' => app()->version(),
//运行模式
'php_sapi_name' => PHP_SAPI,
//当前后台版本
'admin_version' => config('admin.version'),
//mysql版本
'db_version' => Db::query('select VERSION() as db_version')[0]['db_version'],
//php时区
'timezone' => date_default_timezone_get(),
//当前时间
'date_time' => date('Y-m-d H:i:s'),
//依赖包
'require_list' => $require_list,
//依赖包dev
'require_dev_list' => $require_dev_list,
//用户IP
'user_ip' => $user_ip,
//用户系统
'user_os' => $user_os,
//IP所在城市
'user_ip_address' => $user_ip_address,
//用户浏览器
'user_browser' => $user_browser,
];
return $info;
}
}