새 서버 DB 점검을 위해 스크립트 추가
This commit is contained in:
76
fix_env.php
76
fix_env.php
@@ -1,69 +1,61 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Server Environment Fixer & Probe
|
|
||||||
* This script helps diagnose and fix DB connection issues on the server.
|
|
||||||
*/
|
|
||||||
|
|
||||||
header('Content-Type: text/plain; charset=utf-8');
|
header('Content-Type: text/plain; charset=utf-8');
|
||||||
|
echo "=== Production Server Environment Probe ===\n";
|
||||||
echo "=== Server Environment Probe ===\n";
|
|
||||||
echo "PHP Version: " . PHP_VERSION . "\n";
|
|
||||||
echo "Current Directory: " . __DIR__ . "\n";
|
echo "Current Directory: " . __DIR__ . "\n";
|
||||||
echo "Hostname: " . gethostname() . "\n";
|
|
||||||
|
|
||||||
$envPath = __DIR__ . '/.env';
|
$envPath = __DIR__ . '/.env';
|
||||||
echo "Checking .env at: $envPath\n";
|
|
||||||
|
|
||||||
if (file_exists($envPath)) {
|
if (file_exists($envPath)) {
|
||||||
echo ".env exists.\n";
|
echo ".env file found.\n";
|
||||||
$content = file_get_contents($envPath);
|
|
||||||
echo "--- .env Content (masked) ---\n";
|
|
||||||
foreach (explode("\n", $content) as $line) {
|
|
||||||
if (trim($line) === '') continue;
|
|
||||||
if (strpos($line, 'DB_PASS') !== false) {
|
|
||||||
echo "DB_PASS=********\n";
|
|
||||||
} else {
|
|
||||||
echo $line . "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
echo ".env DOES NOT EXIST.\n";
|
echo ".env file NOT found. Using defaults.\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "\n=== Database Connection Test ===\n";
|
echo "\n=== Testing Database Connections ===\n";
|
||||||
|
$hosts = ['localhost', '127.0.0.1'];
|
||||||
|
$db_name = 'chandj'; // 만약 DB명이 다르다면 이 부분을 수정해야 합니다.
|
||||||
|
$db_user = 'root';
|
||||||
|
$db_pass = 'root';
|
||||||
|
|
||||||
$hosts_to_test = ['localhost', '127.0.0.1', 'mysql'];
|
foreach ($hosts as $host) {
|
||||||
$db_name = 'chandj';
|
echo "Testing [$host] with root/root... ";
|
||||||
$db_user = 'root'; // Usually 'root' or matches system user
|
|
||||||
$db_pass = 'root'; // Change as needed
|
|
||||||
|
|
||||||
foreach ($hosts_to_test as $host) {
|
|
||||||
echo "Testing host [$host]... ";
|
|
||||||
try {
|
try {
|
||||||
$dsn = "mysql:host=$host;dbname=$db_name;charset=utf8mb4";
|
$dsn = "mysql:host=$host;dbname=$db_name;charset=utf8mb4";
|
||||||
$pdo = new PDO($dsn, $db_user, $db_pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
|
$pdo = new PDO($dsn, $db_user, $db_pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
|
||||||
echo "SUCCESS!\n";
|
echo "SUCCESS!\n";
|
||||||
|
|
||||||
if (isset($_GET['fix']) && $_GET['fix'] === 'true') {
|
if (isset($_GET['fix']) && $_GET['fix'] === 'true') {
|
||||||
echo "Updating .env to use host [$host]...\n";
|
$newEnv = "APP_URL=https://sales.codebridge-x.com/\n";
|
||||||
$newEnv = "APP_URL=https://sales.sam.kr/\n";
|
|
||||||
$newEnv .= "DB_HOST=$host\n";
|
$newEnv .= "DB_HOST=$host\n";
|
||||||
$newEnv .= "DB_NAME=$db_name\n";
|
$newEnv .= "DB_NAME=$db_name\n";
|
||||||
$newEnv .= "DB_USER=$db_user\n";
|
$newEnv .= "DB_USER=$db_user\n";
|
||||||
$newEnv .= "DB_PASS=$db_pass\n";
|
$newEnv .= "DB_PASS=$db_pass\n";
|
||||||
$newEnv .= "DOCUMENT_ROOT=" . str_replace('\\', '/', __DIR__) . "\n";
|
$newEnv .= "DOCUMENT_ROOT=" . str_replace('\\', '/', __DIR__) . "\n";
|
||||||
|
file_put_contents($envPath, $newEnv);
|
||||||
if (file_put_contents($envPath, $newEnv)) {
|
echo "Successfully updated .env file.\n";
|
||||||
echo "Successfully wrote to .env\n";
|
|
||||||
} else {
|
|
||||||
echo "FAILED to write to .env. Check permissions.\n";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
echo "FAILED: " . $e->getMessage() . "\n";
|
echo "FAILED: " . $e->getMessage() . "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "\nUsage: Append ?fix=true to the URL to automatically create/update .env if a connection succeeds.\n";
|
echo "\n만약 위 테스트가 모두 실패한다면, 서버의 실제 DB 정보를 여기에 입력해 보세요:\n";
|
||||||
echo "SECURITY: DELETE THIS FILE AFTER USE!\n";
|
echo "URL 예시: fix_env.php?user=사용자id&pass=비밀번호&db=db이름\n";
|
||||||
|
|
||||||
|
if (isset($_GET['user'])) {
|
||||||
|
$u = $_GET['user'];
|
||||||
|
$p = $_GET['pass'] ?? '';
|
||||||
|
$d = $_GET['db'] ?? 'chandj';
|
||||||
|
echo "\nCustom Test: [$u] / [$p] on [localhost]... ";
|
||||||
|
try {
|
||||||
|
$dsn = "mysql:host=localhost;dbname=$d;charset=utf8mb4";
|
||||||
|
$pdo = new PDO($dsn, $u, $p, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
|
||||||
|
echo "SUCCESS!\n";
|
||||||
|
if (isset($_GET['fix']) && $_GET['fix'] === 'true') {
|
||||||
|
$newEnv = "DB_HOST=localhost\nDB_NAME=$d\nDB_USER=$u\nDB_PASS=$p\nDOCUMENT_ROOT=" . __DIR__ . "\n";
|
||||||
|
file_put_contents($envPath, $newEnv);
|
||||||
|
echo "Updated .env with custom credentials.\n";
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo "FAILED: " . $e->getMessage() . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user