-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathinstall.php
More file actions
48 lines (42 loc) · 1.99 KB
/
Copy pathinstall.php
File metadata and controls
48 lines (42 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
/**
* install.php — إعداد قاعدة البيانات لمرة واحدة (محمي برمز سرّي).
* ============================================================
* 1) في config.local.php: اضبط DB_PASS و DB_ENABLED=true و INSTALL_TOKEN (رمز عشوائي).
* 2) افتح: /install.php?token=<INSTALL_TOKEN>
* أو من سطر الأوامر: php install.php
* 3) ينشئ قاعدة البيانات والجداول. احذف هذا الملف بعد النجاح.
* ============================================================
*/
require __DIR__ . '/includes/bootstrap.php';
header('Content-Type: text/plain; charset=utf-8');
$isCli = (PHP_SAPI === 'cli');
// حماية: على الويب يجب تمرير رمز سرّي صحيح (CLI مسموح دائماً).
if (!$isCli) {
$token = (string)($_GET['token'] ?? '');
if (INSTALL_TOKEN === '' || !hash_equals(INSTALL_TOKEN, $token)) {
http_response_code(403);
echo "Forbidden.\n";
echo "Set INSTALL_TOKEN in config.local.php and open install.php?token=YOUR_TOKEN\n";
exit;
}
}
if (!defined('DB_ENABLED') || !DB_ENABLED) {
echo "DB_ENABLED is false.\n";
echo "In includes/config.local.php set: DB_ENABLED => true, and DB_PASS.\n";
exit;
}
$result = Database::install();
if ($result['ok']) {
echo "OK — database setup completed.\n";
echo "Steps: " . implode(', ', $result['steps']) . "\n";
echo "\nDelete install.php now for safety.\n";
} else {
// لا نكشف تفاصيل الاستثناء للعميل — نسجّلها في سجلّ الخادم فقط.
error_log('[install.php] setup failed: ' . ($result['error'] ?? 'unknown'));
http_response_code(500);
echo "FAILED — setup did not complete.\n";
echo "Steps done: " . (empty($result['steps']) ? '(none)' : implode(', ', $result['steps'])) . "\n";
echo "Check DB settings in config.local.php and that MySQL is running.\n";
echo "(Details were written to the server error log.)\n";
}