Files
php_app_downloader/includes/db.php
T
2026-06-24 18:04:15 +08:00

68 lines
2.1 KiB
PHP

<?php
// 数据库连接和初始化
$data_dir = __DIR__ . '/../data';
$db_path = $data_dir . '/database.db';
$is_new_db = !file_exists($db_path);
// 检查 data 目录是否存在和可写
if (!is_dir($data_dir)) {
die("错误: data 目录不存在。请创建目录并设置权限: mkdir -p data && chmod 777 data");
}
if (!is_writable($data_dir)) {
die("错误: data 目录不可写。请设置权限: chmod 777 data");
}
// 如果数据库文件存在但不可写
if (file_exists($db_path) && !is_writable($db_path)) {
die("错误: 数据库文件不可写。请设置权限: chmod 666 data/database.db");
}
try {
$db = new PDO('sqlite:' . $db_path);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 如果是新数据库,初始化表结构
if ($is_new_db) {
// 创建 apps 表
$db->exec("
CREATE TABLE IF NOT EXISTS apps (
id INTEGER PRIMARY KEY AUTOINCREMENT,
filename TEXT NOT NULL,
original_name TEXT NOT NULL,
version TEXT,
description TEXT,
upload_time DATETIME DEFAULT CURRENT_TIMESTAMP,
file_size INTEGER
)
");
// 创建 config 表
$db->exec("
CREATE TABLE IF NOT EXISTS config (
key TEXT PRIMARY KEY,
value TEXT
)
");
// 插入默认配置
$defaults = [
['site_title', 'OPS 运营管理系统'],
['site_description', '点击下方按钮下载移动端 APP'],
['logo_path', 'logo.png']
];
$stmt = $db->prepare("INSERT INTO config (key, value) VALUES (?, ?)");
foreach ($defaults as $config) {
$stmt->execute($config);
}
// 设置新创建的数据库文件权限
@chmod($db_path, 0666);
}
} catch (PDOException $e) {
die("数据库连接失败: " . $e->getMessage() . "<br><br>请确保:<br>1. data 目录存在且可写 (chmod 777 data)<br>2. Web 服务器用户有权限创建文件");
}