서버 내 .env 파일 위치 확인용 스캐너 업데이트

This commit is contained in:
2026-01-04 16:14:42 +09:00
parent d5893aa6ed
commit 16451963ff

View File

@@ -1,61 +1,35 @@
<?php
header('Content-Type: text/plain; charset=utf-8');
echo "=== Production Server Environment Probe ===\n";
echo "Current Directory: " . __DIR__ . "\n";
echo "=== File Search Result ===\n";
$envPath = __DIR__ . '/.env';
if (file_exists($envPath)) {
echo ".env file found.\n";
} else {
echo ".env file NOT found. Using defaults.\n";
}
echo "\n=== Testing Database Connections ===\n";
$hosts = ['localhost', '127.0.0.1'];
$db_name = 'chandj'; // 만약 DB명이 다르다면 이 부분을 수정해야 합니다.
$db_user = 'root';
$db_pass = 'root';
foreach ($hosts as $host) {
echo "Testing [$host] with root/root... ";
try {
$dsn = "mysql:host=$host;dbname=$db_name;charset=utf8mb4";
$pdo = new PDO($dsn, $db_user, $db_pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
echo "SUCCESS!\n";
if (isset($_GET['fix']) && $_GET['fix'] === 'true') {
$newEnv = "APP_URL=https://sales.codebridge-x.com/\n";
$newEnv .= "DB_HOST=$host\n";
$newEnv .= "DB_NAME=$db_name\n";
$newEnv .= "DB_USER=$db_user\n";
$newEnv .= "DB_PASS=$db_pass\n";
$newEnv .= "DOCUMENT_ROOT=" . str_replace('\\', '/', __DIR__) . "\n";
file_put_contents($envPath, $newEnv);
echo "Successfully updated .env file.\n";
function searchEnv($dir, $depth = 0) {
if ($depth > 2) return;
echo "Scanning: $dir\n";
if (!is_dir($dir)) return;
$files = scandir($dir);
foreach ($files as $file) {
if ($file === '.' || $file === '..') continue;
if (strpos($file, '.env') !== false) {
echo "[FOUND] $dir/$file\n";
$content = file_get_contents("$dir/$file");
echo "--- Content of $file ---\n";
foreach (explode("\n", $content) as $line) {
if (trim($line) === '') continue;
if (strpos($line, 'DB_PASS') !== false || strpos($line, 'PASSWORD') !== false) {
echo explode('=', $line)[0] . "=********\n";
} else {
echo $line . "\n";
}
}
echo "------------------------\n";
}
} catch (Exception $e) {
echo "FAILED: " . $e->getMessage() . "\n";
}
searchEnv(dirname($dir), $depth + 1);
}
echo "\n만약 위 테스트가 모두 실패한다면, 서버의 실제 DB 정보를 여기에 입력해 보세요:\n";
echo "URL 예시: fix_env.php?user=사용자id&pass=비밀번호&db=db이름\n";
searchEnv(__DIR__);
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";
}
}
echo "\n=== Permissions Check ===\n";
echo "Web User: " . posix_getpwuid(posix_geteuid())['name'] . "\n";
echo "Directory writable: " . (is_writable(__DIR__) ? "YES" : "NO") . "\n";