|
|
<?php
|
|
|
require_once __DIR__ . '/storage.php';
|
|
|
|
|
|
|
|
|
$testAuth = false;
|
|
|
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
|
|
|
$users = StorageConfig::getUsers();
|
|
|
$testAuth = isset($users[$_SERVER['PHP_AUTH_USER']]) &&
|
|
|
$users[$_SERVER['PHP_AUTH_USER']] === $_SERVER['PHP_AUTH_PW'];
|
|
|
}
|
|
|
|
|
|
if (!$testAuth) {
|
|
|
header('WWW-Authenticate: Basic realm="VvvebJs HF Space Check"');
|
|
|
header('HTTP/1.0 401 Unauthorized');
|
|
|
die('Authentication required for Hugging Face Space check');
|
|
|
}
|
|
|
|
|
|
|
|
|
$isHuggingFace = StorageConfig::isHuggingFaceSpace();
|
|
|
$envDebug = StorageConfig::debugEnvironment();
|
|
|
$github = StorageConfig::getGitHubConfig();
|
|
|
$kv = StorageConfig::getKVConfig();
|
|
|
$storageType = StorageConfig::getStorageType();
|
|
|
|
|
|
|
|
|
function checkHuggingFaceConfig() {
|
|
|
$github = StorageConfig::getGitHubConfig();
|
|
|
$issues = [];
|
|
|
|
|
|
|
|
|
if (!StorageConfig::isHuggingFaceSpace()) {
|
|
|
$issues[] = [
|
|
|
'type' => 'warning',
|
|
|
'title' => '不在 Hugging Face Space 环境',
|
|
|
'message' => '当前似乎不在Hugging Face Space环境中运行,某些环境变量可能无法正确读取'
|
|
|
];
|
|
|
}
|
|
|
|
|
|
|
|
|
if (empty($github['token'])) {
|
|
|
$issues[] = [
|
|
|
'type' => 'error',
|
|
|
'title' => 'GitHub Token 未配置',
|
|
|
'message' => 'GITHUB_TOKEN 环境变量为空,请在Hugging Face Space设置中添加此私有变量'
|
|
|
];
|
|
|
}
|
|
|
|
|
|
|
|
|
if (empty($github['owner'])) {
|
|
|
$issues[] = [
|
|
|
'type' => 'error',
|
|
|
'title' => 'GitHub Owner 未配置',
|
|
|
'message' => 'GITHUB_OWNER 环境变量为空'
|
|
|
];
|
|
|
}
|
|
|
|
|
|
if (empty($github['repo'])) {
|
|
|
$issues[] = [
|
|
|
'type' => 'error',
|
|
|
'title' => 'GitHub Repo 未配置',
|
|
|
'message' => 'GITHUB_REPO 环境变量为空'
|
|
|
];
|
|
|
}
|
|
|
|
|
|
return $issues;
|
|
|
}
|
|
|
|
|
|
$configIssues = checkHuggingFaceConfig();
|
|
|
?>
|
|
|
|
|
|
<!DOCTYPE html>
|
|
|
<html lang="en">
|
|
|
<head>
|
|
|
<meta charset="utf-8">
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
<title>VvvebJs Hugging Face Space 配置检查</title>
|
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
|
<style>
|
|
|
.config-value { background-color:
|
|
|
.status-ok { color:
|
|
|
.status-error { color:
|
|
|
.status-warning { color:
|
|
|
.env-debug { background:
|
|
|
</style>
|
|
|
</head>
|
|
|
<body>
|
|
|
<div class="container mt-5">
|
|
|
<div class="row">
|
|
|
<div class="col-md-10 mx-auto">
|
|
|
<h1 class="mb-4">🚀 VvvebJs Hugging Face Space 配置检查</h1>
|
|
|
|
|
|
<!-- 环境检测 -->
|
|
|
<div class="card mb-4">
|
|
|
<div class="card-header">
|
|
|
<h3>🌐 运行环境检测</h3>
|
|
|
</div>
|
|
|
<div class="card-body">
|
|
|
<div class="row">
|
|
|
<div class="col-md-6">
|
|
|
<p><strong>Hugging Face Space:</strong>
|
|
|
<span class="<?= $isHuggingFace ? 'status-ok' : 'status-warning' ?>">
|
|
|
<?= $isHuggingFace ? '✅ 是' : '⚠️ 否' ?>
|
|
|
</span>
|
|
|
</p>
|
|
|
<p><strong>Space ID:</strong>
|
|
|
<span class="config-value"><?= htmlspecialchars($envDebug['space_id']) ?></span>
|
|
|
</p>
|
|
|
<p><strong>主机:</strong>
|
|
|
<span class="config-value"><?= htmlspecialchars($envDebug['host']) ?></span>
|
|
|
</p>
|
|
|
</div>
|
|
|
<div class="col-md-6">
|
|
|
<p><strong>环境变量来源:</strong> Hugging Face Space Settings</p>
|
|
|
<p><strong>检查方法:</strong> $_SERVER 和 $_ENV</p>
|
|
|
<p><strong>优先级:</strong> Space环境变量 > .env文件</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- 配置问题检查 -->
|
|
|
<?php if (!empty($configIssues)): ?>
|
|
|
<div class="card mb-4">
|
|
|
<div class="card-header">
|
|
|
<h3 class="status-error">❌ 发现配置问题</h3>
|
|
|
</div>
|
|
|
<div class="card-body">
|
|
|
<?php foreach ($configIssues as $issue): ?>
|
|
|
<div class="alert alert-<?= $issue['type'] === 'error' ? 'danger' : 'warning' ?> mb-3">
|
|
|
<h5><?= htmlspecialchars($issue['title']) ?></h5>
|
|
|
<p><?= htmlspecialchars($issue['message']) ?></p>
|
|
|
</div>
|
|
|
<?php endforeach; ?>
|
|
|
|
|
|
<div class="alert alert-info">
|
|
|
<h5>🔧 如何在 Hugging Face Space 中配置环境变量:</h5>
|
|
|
<ol>
|
|
|
<li>访问你的 <a href="https://huggingface.co/spaces" target="_blank">Hugging Face Spaces</a></li>
|
|
|
<li>点击进入你的 Space 项目</li>
|
|
|
<li>点击 <strong>Settings</strong> 标签页</li>
|
|
|
<li>在 <strong>Variables and secrets</strong> 部分添加以下环境变量:</li>
|
|
|
<ul>
|
|
|
<li><code>GITHUB_TOKEN</code> (Private Secret) - 你的GitHub Personal Access Token</li>
|
|
|
<li><code>GITHUB_OWNER</code> (Public) - GitHub用户名或组织名</li>
|
|
|
<li><code>GITHUB_REPO</code> (Public) - 仓库名</li>
|
|
|
<li><code>GITHUB_BRANCH</code> (Public) - 分支名(通常是main)</li>
|
|
|
<li><code>GITHUB_PATH</code> (Public) - 存储路径(如: pages/)</li>
|
|
|
</ul>
|
|
|
<li>添加后点击 <strong>Restart this Space</strong> 使环境变量生效</li>
|
|
|
</ol>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<?php else: ?>
|
|
|
<div class="alert alert-success">
|
|
|
<h3 class="status-ok">✅ 配置检查通过</h3>
|
|
|
<p>所有必需的环境变量都已正确设置在Hugging Face Space中。</p>
|
|
|
</div>
|
|
|
<?php endif; ?>
|
|
|
|
|
|
<!-- 当前配置详情 -->
|
|
|
<div class="card mb-4">
|
|
|
<div class="card-header">
|
|
|
<h3>📋 当前环境变量配置</h3>
|
|
|
</div>
|
|
|
<div class="card-body">
|
|
|
<div class="row">
|
|
|
<div class="col-md-6">
|
|
|
<h5>存储配置</h5>
|
|
|
<p><strong>存储类型:</strong> <span class="config-value"><?= htmlspecialchars($storageType) ?></span></p>
|
|
|
|
|
|
<h5 class="mt-4">GitHub 环境变量</h5>
|
|
|
<p><strong>GITHUB_TOKEN:</strong>
|
|
|
<span class="config-value <?= empty($github['token']) ? 'status-error' : 'status-ok' ?>">
|
|
|
<?php
|
|
|
if (empty($github['token'])) {
|
|
|
echo '❌ 未设置';
|
|
|
} else {
|
|
|
echo '✅ ' . substr($github['token'], 0, 8) . '... (长度: ' . strlen($github['token']) . ')';
|
|
|
}
|
|
|
?>
|
|
|
</span>
|
|
|
</p>
|
|
|
<p><strong>GITHUB_OWNER:</strong> <span class="config-value"><?= htmlspecialchars($github['owner']) ?></span></p>
|
|
|
<p><strong>GITHUB_REPO:</strong> <span class="config-value"><?= htmlspecialchars($github['repo']) ?></span></p>
|
|
|
<p><strong>GITHUB_BRANCH:</strong> <span class="config-value"><?= htmlspecialchars($github['branch']) ?></span></p>
|
|
|
<p><strong>GITHUB_PATH:</strong> <span class="config-value"><?= htmlspecialchars($github['path']) ?></span></p>
|
|
|
</div>
|
|
|
<div class="col-md-6">
|
|
|
<h5>用户配置</h5>
|
|
|
<p><strong>当前用户:</strong> <span class="config-value"><?= htmlspecialchars(StorageConfig::getCurrentUser()) ?></span></p>
|
|
|
<p><strong>用户路径:</strong> <span class="config-value"><?= htmlspecialchars(StorageConfig::getUserPath()) ?></span></p>
|
|
|
|
|
|
<h5 class="mt-4">EdgeOne KV 配置</h5>
|
|
|
<p><strong>EDGEONE_KV_API_KEY:</strong>
|
|
|
<span class="config-value">
|
|
|
<?= !empty($kv['api_key']) ? '✅ ' . substr($kv['api_key'], 0, 8) . '...' : '❌ 未设置' ?>
|
|
|
</span>
|
|
|
</p>
|
|
|
<p><strong>EDGEONE_KV_SECRET_KEY:</strong>
|
|
|
<span class="config-value">
|
|
|
<?= !empty($kv['secret_key']) ? '✅ ' . substr($kv['secret_key'], 0, 8) . '...' : '❌ 未设置' ?>
|
|
|
</span>
|
|
|
</p>
|
|
|
<p><strong>EDGEONE_KV_ZONE_ID:</strong> <span class="config-value"><?= htmlspecialchars($kv['zone_id']) ?></span></p>
|
|
|
<p><strong>EDGEONE_KV_NAMESPACE:</strong> <span class="config-value"><?= htmlspecialchars($kv['namespace']) ?></span></p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- 环境调试信息 -->
|
|
|
<div class="card mb-4">
|
|
|
<div class="card-header">
|
|
|
<h3>🔍 环境调试信息</h3>
|
|
|
</div>
|
|
|
<div class="card-body">
|
|
|
<div class="env-debug">
|
|
|
<?= json_encode($envDebug, JSON_PRETTY_PRINT) ?>
|
|
|
</div>
|
|
|
<small class="text-muted">这些信息有助于调试环境变量读取问题</small>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- 测试工具 -->
|
|
|
<div class="card mb-4">
|
|
|
<div class="card-header">
|
|
|
<h3>🧪 测试工具</h3>
|
|
|
</div>
|
|
|
<div class="card-body">
|
|
|
<div class="row">
|
|
|
<div class="col-md-3">
|
|
|
<a href="github-advanced-test.php" class="btn btn-primary w-100">GitHub 完整测试</a>
|
|
|
</div>
|
|
|
<div class="col-md-3">
|
|
|
<a href="github-test.php" class="btn btn-info w-100">GitHub 基础测试</a>
|
|
|
</div>
|
|
|
<div class="col-md-3">
|
|
|
<a href="config-check.php" class="btn btn-secondary w-100">通用配置检查</a>
|
|
|
</div>
|
|
|
<div class="col-md-3">
|
|
|
<a href="editor.html" class="btn btn-success w-100">返回编辑器</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- Hugging Face Space 特殊说明 -->
|
|
|
<div class="card">
|
|
|
<div class="card-header">
|
|
|
<h3>📚 Hugging Face Space 配置指南</h3>
|
|
|
</div>
|
|
|
<div class="card-body">
|
|
|
<div class="accordion" id="hfAccordion">
|
|
|
<div class="accordion-item">
|
|
|
<h2 class="accordion-header">
|
|
|
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#hf1">
|
|
|
如何添加环境变量?
|
|
|
</button>
|
|
|
</h2>
|
|
|
<div id="hf1" class="accordion-collapse collapse show" data-bs-parent="#hfAccordion">
|
|
|
<div class="accordion-body">
|
|
|
<ol>
|
|
|
<li>登录 <a href="https://huggingface.co" target="_blank">Hugging Face</a></li>
|
|
|
<li>进入你的 Space: <strong>catptain-vvvebjs</strong></li>
|
|
|
<li>点击 <strong>Settings</strong> 标签</li>
|
|
|
<li>找到 <strong>Variables and secrets</strong> 部分</li>
|
|
|
<li>点击 <strong>New variable</strong> 或 <strong>New secret</strong></li>
|
|
|
<li>添加必需的环境变量</li>
|
|
|
<li>点击 <strong>Restart this Space</strong></li>
|
|
|
</ol>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="accordion-item">
|
|
|
<h2 class="accordion-header">
|
|
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#hf2">
|
|
|
Public变量 vs Private密钥?
|
|
|
</button>
|
|
|
</h2>
|
|
|
<div id="hf2" class="accordion-collapse collapse" data-bs-parent="#hfAccordion">
|
|
|
<div class="accordion-body">
|
|
|
<strong>Private Secrets (私有密钥):</strong>
|
|
|
<ul>
|
|
|
<li><code>GITHUB_TOKEN</code> - GitHub访问令牌,必须保密</li>
|
|
|
<li><code>EDGEONE_KV_API_KEY</code> - API密钥</li>
|
|
|
<li><code>EDGEONE_KV_SECRET_KEY</code> - 密钥</li>
|
|
|
<li>用户密码变量</li>
|
|
|
</ul>
|
|
|
<strong>Public Variables (公开变量):</strong>
|
|
|
<ul>
|
|
|
<li><code>GITHUB_OWNER</code></li>
|
|
|
<li><code>GITHUB_REPO</code></li>
|
|
|
<li><code>GITHUB_BRANCH</code></li>
|
|
|
<li><code>GITHUB_PATH</code></li>
|
|
|
<li><code>STORAGE_TYPE</code></li>
|
|
|
<li>用户名变量</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="accordion-item">
|
|
|
<h2 class="accordion-header">
|
|
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#hf3">
|
|
|
环境变量不生效?
|
|
|
</button>
|
|
|
</h2>
|
|
|
<div id="hf3" class="accordion-collapse collapse" data-bs-parent="#hfAccordion">
|
|
|
<div class="accordion-body">
|
|
|
<strong>解决步骤:</strong>
|
|
|
<ol>
|
|
|
<li>确认在Hugging Face Space的Settings中正确添加了所有环境变量</li>
|
|
|
<li>检查变量名拼写是否完全正确(区分大小写)</li>
|
|
|
<li>确认GitHub Token有正确的权限(需要repo权限)</li>
|
|
|
<li>保存环境变量后,一定要点击 <strong>"Restart this Space"</strong></li>
|
|
|
<li>等待Space重启完成(通常需要1-2分钟)</li>
|
|
|
<li>重新访问这个配置检查页面验证</li>
|
|
|
</ol>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
|
</body>
|
|
|
</html> |