自动检测您的服务器运行环境,并提供详细配置信息和优化建议
'info', 'message' => '开始检测服务器环境...']; $log[] = ['type' => 'info', 'message' => 'SERVER_SOFTWARE: ' . htmlspecialchars($serverSoftware)]; // 通过多种方式检测服务器类型 if (stripos($serverSoftware, 'Apache') !== false || function_exists('apache_get_version') || isset($_SERVER['SERVER_SIGNATURE']) && stripos($_SERVER['SERVER_SIGNATURE'], 'Apache') !== false) { $webServer = 'Apache'; $log[] = ['type' => 'success', 'message' => '检测到Apache服务器']; } elseif (stripos($serverSoftware, 'nginx') !== false) { $webServer = 'Nginx'; $log[] = ['type' => 'success', 'message' => '检测到Nginx服务器']; } elseif (stripos($serverSoftware, 'IIS') !== false || stripos($serverSoftware, 'Microsoft-IIS') !== false) { $webServer = 'IIS'; $log[] = ['type' => 'success', 'message' => '检测到Microsoft IIS服务器']; } elseif (stripos($serverSoftware, 'LiteSpeed') !== false) { $webServer = 'LiteSpeed'; $log[] = ['type' => 'success', 'message' => '检测到LiteSpeed服务器']; } else { // 尝试通过其他方式检测 $headers = getallheaders(); $log[] = ['type' => 'info', 'message' => '尝试通过HTTP头信息检测服务器类型']; foreach ($headers as $key => $value) { if (stripos($key, 'server') !== false || stripos($key, 'powered') !== false) { $log[] = ['type' => 'info', 'message' => "HTTP头 {$key}: {$value}"]; } } // 检查特定的服务器标记 if (isset($_SERVER['SERVER_SIGNATURE'])) { $log[] = ['type' => 'info', 'message' => 'SERVER_SIGNATURE: ' . htmlspecialchars($_SERVER['SERVER_SIGNATURE'])]; } $log[] = ['type' => 'warning', 'message' => '无法准确识别Web服务器类型']; } // 检测PHP信息 $phpVersion = phpversion(); $log[] = ['type' => 'success', 'message' => "PHP版本: {$phpVersion}"]; // 检测操作系统 $os = PHP_OS; $log[] = ['type' => 'info', 'message' => "操作系统: {$os}"]; // 检测服务器IP和端口 $serverAddr = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '未知'; $serverPort = isset($_SERVER['SERVER_PORT']) ? $_SERVER['SERVER_PORT'] : '未知'; $log[] = ['type' => 'info', 'message' => "服务器地址: {$serverAddr}:{$serverPort}"]; // 检测PHP运行模式 $phpSapi = php_sapi_name(); $log[] = ['type' => 'info', 'message' => "PHP运行模式: {$phpSapi}"]; // 检测PHP扩展 $extensions = get_loaded_extensions(); $log[] = ['type' => 'info', 'message' => "已加载扩展: " . count($extensions) . " 个"]; // 检测关键模块 $modules = []; $importantModules = ['pdo_mysql', 'mysqli', 'gd', 'curl', 'openssl', 'mbstring', 'json', 'session']; foreach ($importantModules as $module) { $modules[$module] = extension_loaded($module) ? '已启用' : '未启用'; } // 检测.htaccess支持(Apache特有) $htaccessSupport = '未知'; if ($webServer === 'Apache') { $htaccessSupport = '可能支持(Apache默认支持.htaccess)'; } elseif ($webServer === 'Nginx') { $htaccessSupport = '不支持(Nginx需要将规则转换为nginx.conf配置)'; } else { $htaccessSupport = '需根据服务器类型确定'; } // 检测URL重写支持 $rewriteSupport = '未知'; if ($webServer === 'Apache') { $rewriteSupport = function_exists('apache_get_modules') ? (in_array('mod_rewrite', apache_get_modules()) ? '已启用' : '未启用') : '需检查mod_rewrite'; } elseif ($webServer === 'Nginx') { $rewriteSupport = '内置支持(需在配置中启用)'; } // 检测最大上传限制 $maxUpload = ini_get('upload_max_filesize'); $maxPost = ini_get('post_max_size'); $serverInfo = [ 'web_server' => $webServer, 'server_software' => $serverSoftware, 'php_version' => $phpVersion, 'os' => $os, 'server_addr' => $serverAddr, 'server_port' => $serverPort, 'php_sapi' => $phpSapi, 'extensions' => $modules, 'htaccess_support' => $htaccessSupport, 'rewrite_support' => $rewriteSupport, 'max_upload' => $maxUpload, 'max_post' => $maxPost, 'loaded_extensions_count' => count($extensions), 'document_root' => isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '未知', 'script_filename' => isset($_SERVER['SCRIPT_FILENAME']) ? $_SERVER['SCRIPT_FILENAME'] : '未知', 'request_scheme' => isset($_SERVER['REQUEST_SCHEME']) ? $_SERVER['REQUEST_SCHEME'] : (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http'), ]; $log[] = ['type' => 'success', 'message' => '服务器环境检测完成']; return [ 'server_info' => $serverInfo, 'detection_log' => $log ]; } // 执行检测 $detectionResult = detectServerEnvironment(); $serverInfo = $detectionResult['server_info']; $detectionLog = $detectionResult['detection_log']; // 根据服务器类型设置样式类 $serverClass = 'status-unknown'; switch (strtolower($serverInfo['web_server'])) { case 'apache': $serverClass = 'status-apache'; break; case 'nginx': $serverClass = 'status-nginx'; break; case 'iis': $serverClass = 'status-iis'; break; } ?>