117 lines
4.2 KiB
PHP
117 lines
4.2 KiB
PHP
<?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;
|
||
}
|
||
|
||
} |