PHP_VERSION_ID >= 70400, 'val' => PHP_VERSION . '(需 7.4 以上)', ]; // 2. 必需扩展 $needExt = ['pdo_mysql' => '数据库', 'mbstring' => '中文处理', 'openssl' => '敏感字段加密', 'json' => '配置与接口', 'gd' => '图片裁剪']; foreach ($needExt as $ext => $why) { $ok = extension_loaded($ext); $checks['扩展 ' . $ext] = ['ok' => $ok, 'val' => $ok ? '已加载 · ' . $why : '缺失 · ' . $why]; } // 3. 配置文件 $checks['配置文件 config.php'] = [ 'ok' => $hasConfig, 'val' => $hasConfig ? '已就位' : '未找到(请复制 config.example.php 后填写)', ]; // 4. 数据库连接(只有配置齐全才去连) if (is_array($config) && !empty($config['db'])) { $d = $config['db']; try { $dsn = sprintf( 'mysql:host=%s;port=%d;dbname=%s;charset=%s', $d['host'], $d['port'], $d['name'], $d['charset'] ); $pdo = new PDO($dsn, $d['user'], $d['pass'], [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, ]); $ver = $pdo->query('SELECT VERSION()')->fetchColumn(); $checks['数据库连接'] = ['ok' => true, 'val' => 'MySQL ' . $ver . ' · 库 ' . $d['name']]; } catch (Throwable $e) { $checks['数据库连接'] = [ 'ok' => false, 'val' => $debug ? $e->getMessage() : '连接失败(把 config.php 的 debug 设为 true 可看详情)', ]; } } $allOk = true; foreach ($checks as $c) { $allOk = $allOk && $c['ok']; } $siteName = is_array($config) && !empty($config['site_name']) ? $config['site_name'] : '家书'; ?> <?= htmlspecialchars($siteName, ENT_QUOTES, 'UTF-8') ?> · 环境自检

· 环境自检

FamilyBook —— 一本用岁月写成的家谱