📖
PHP가 DB에 연결을 시도할 때 MySQL 서비스가 아직 활성화되지 않아 실패하는 경우

페이지 정보

본문

Windows 부팅 순서상, Apache(PHP 웹서버)가 MySQL보다 먼저 시작해서,
PHP가 DB에 연결을 시도할 때 MySQL 서비스가 아직 활성화되지 않아 실패하는 경우입니다.

✅ 해결 방법
🔹 방법 1: Apache 서비스 시작을 MySQL 이후로 지연시키기 (권장)
▶ 서비스 간 "종속성" 설정
1. **명령 프롬프트(CMD)**를 관리자 권한으로 실행
2. Apache 서비스 이름 확인:[code]sc qc Apache2.4[/code]
3. MySQL 서비스 이름 확인:[code]sc query type= service | findstr MySQL[/code](예: MySQL, MySQL80, MariaDB 등)
4.Apache를 MySQL에 종속시키기 (예시로 MySQL80):[code]sc config Apache2.4 depend= MySQL80[/code]⚠️ depend= 뒤에 공백이 있어야 함!
(기존 종속성이 있다면 병렬로 추가해야 함)
이후 재부팅 시, Apache는 MySQL이 완전히 시작된 후에 실행됩니다.

✅ 해결: Apache2.4 서비스를 MySQL에 "종속"되도록 설정
이제 MySQL 서비스 이름만 알면 Apache가 MySQL이 완전히 시작된 후에만 실행되도록 구성할 수 있습니다.

1️⃣ MySQL 서비스 이름 확인
**CMD (관리자 권한)**에서 다음 명령어를 입력해 MySQL 서비스 이름을 찾습니다:[code]sc query state= all | findstr /I mysql[/code]
예시 결과:[code]SERVICE_NAME: MySQL80[/code]→ 위에서 보인 MySQL80이 MySQL 서비스 이름입니다. (XAMPP 사용자는 mysql일 수 있음)

2️⃣ Apache2.4에 MySQL 의존성 추가
다음 명령을 입력하여 Apache가 MySQL 서비스 이후에 실행되도록 설정합니다:[code]sc config Apache2.4 depend= Tcpip/Afd/MySQL80[/code]❗주의: 기존 종속성(Tcpip, Afd)을 유지한 채 MySQL80을 추가해야 합니다
💡 depend= 뒤에는 공백 필수
💡 MySQL 서비스 이름은 여러분 시스템에 맞게 바꾸세요

3️⃣ 확인
설정이 반영됐는지 확인하려면:[code]sc qc Apache2.4[/code]출력 내용 중 DEPENDENCIES 항목이 아래처럼 나와야 합니다:[code]DEPENDENCIES  : Tcpip
                Afd
                MySQL80[/code]
4️⃣ 테스트
시스템을 재부팅하여 Apache가 MySQL이 완전히 준비된 후에 실행되는지 확인해보세요.

🔄 복구 방법 (종속성 제거 시)
만약 문제가 생기면 다음 명령으로 종속성 원상복구 가능합니다:[code]sc config Apache2.4 depend= Tcpip/Afd[/code]

📌 추가 팁
혹시 부팅 직후에도 확실히 늦게 시작되도록 하려면 Apache 서비스를 자동(지연 시작)으로 바꾸는 것도 고려할 수 있습니다:[code]sc config Apache2.4 start= delayed-auto[/code]이건 필수는 아니고, MySQL이 느리게 올라오는 경우에만 보완용으로 쓰세요.

💊 .bat 파일 설정 자동화나 복원 스크립트
✅ Apache-MySQL 종속성 설정 .bat 스크립트[code]@echo off
echo Apache2.4 서비스를 MySQL80 이후에 시작되도록 설정 중...

REM 관리자 권한 확인
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
    echo 이 스크립트는 관리자 권한으로 실행해야 합니다.
    pause
    exit /b
)

REM Apache2.4 종속성 설정 (Tcpip/Afd/MySQL80)
sc config Apache2.4 depend= Tcpip/Afd/MySQL80

REM 설정 확인
echo 설정 결과:
sc qc Apache2.4

echo 완료되었습니다. 시스템을 재부팅하여 설정을 테스트하세요.
pause[/code]
✅ 원래대로 되돌리는 .bat 파일 (복원용)[code]@echo off
echo Apache2.4 종속성 원래대로 복원 중...

NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
    echo 이 스크립트는 관리자 권한으로 실행해야 합니다.
    pause
    exit /b
)

REM MySQL80 종속성 제거 (기본 Tcpip/Afd만 유지)
sc config Apache2.4 depend= Tcpip/Afd

REM 설정 확인
echo 설정 결과:
sc qc Apache2.4

echo 복원이 완료되었습니다.
pause[/code]
🔄 사용 방법
1. 위 내용 중 하나를 .bat 파일로 저장 (예: apache_depend_mysql.bat)
2. 우클릭 > 관리자 권한으로 실행
3. 메시지를 따라 설정 적용

📢 .bat가 아닌 **Windows GUI(그래픽 인터페이스)**로도 설정할 수 있으며, 서비스 시작 지연 설정을 함께 적용해주면 더욱 안정적으로 구동됩니다.

✅ 1. GUI로 Apache에 MySQL 종속성 추가하기
GUI에서는 "종속성"을 직접 추가할 수는 없지만, 다른 방법으로 지연 시작을 적용하거나 확인할 수 있습니다.

✅ 2. Apache2.4 서비스 "지연된 자동 시작"으로 변경 (GUI 방식)
1. Win + R 키 → services.msc 입력 → Enter
  (또는 작업 표시줄에서 "서비스" 검색)
2. Apache2.4 항목을 찾아 더블클릭
3. "일반" 탭에서:
  시작 유형을 자동(지연된 시작)으로 변경
4. "확인" 후 닫고, 시스템을 재부팅해 테스트
⚠️ 이 설정은 MySQL이 너무 늦게 시작하는 경우를 대비해 Apache 시작을 몇 초 지연하는 효과가 있습니다.

✅ 3. MySQL80이 정상적으로 실행 중인지 자동 검사 (선택 사항)
MySQL80 서비스가 오래 걸려 시작되거나 실패하는 경우에도 대응하려면 Recovery(복구) 탭에서 아래처럼 설정할 수 있습니다:
1. MySQL80 → 더블클릭
2. 복구 탭 선택
3. 첫 번째 실패, 두 번째 실패 등 항목을 모두 서비스 다시 시작으로 설정
4. 간격을 1분 등으로 지정 가능

✅ 조합 권장
Apache가 MySQL 이후 시작되도록 함 -> .bat (SC 명령어) -> 필수 설정
Apache 시작을 약간 지연 -> GUI (자동(지연된 시작)) -> 안정성 강화
MySQL 오류 시 자동 재시작 -> GUI (복구 탭) -> 장애 회복성 향상

📒 스크립트와 GUI 설정을 병행하여 Windows에서 Apache가 MySQL보다 나중에 안정적으로 실행되도록 설정하는 완전한 구성 가이드

✅ 1단계: 스크립트로 종속성 설정 (Apache2.4 → MySQL80)
▶ A. 설정 스크립트 (apache_depend_mysql.bat)[code]@echo off
echo [Apache2.4] 서비스를 [MySQL80] 이후에 실행되도록 설정합니다...

REM 관리자 권한 확인
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
    echo ⚠ 관리자 권한으로 실행해주세요!
    pause
    exit /b
)

REM Apache에 Tcpip/Afd/MySQL80 종속성 추가
sc config Apache2.4 depend= Tcpip/Afd/MySQL80

REM 결과 출력
echo === 설정 결과 ===
sc qc Apache2.4

echo 완료되었습니다. 다음 단계: 서비스 시작 유형 변경 (GUI)
pause[/code]이 스크립트를 관리자 권한으로 실행해야 합니다.

✅ 2단계: GUI에서 Apache 시작 유형 지연으로 설정
1. Win + R → services.msc → Enter
2. Apache2.4 항목 더블 클릭
3. "일반" 탭에서:
  시작 유형: 자동(지연된 시작) 선택
  서비스 상태가 “실행 중”이면 일시 중지 후 시작 가능
4. 확인 후 닫기
이렇게 하면 부팅 시 약 2~3초 지연 후 Apache가 시작됩니다.

✅ 3단계: MySQL 자동 복구 설정 (옵션)
1. services.msc에서 MySQL80 더블 클릭
2. 복구 탭에서:
  첫 번째 실패: 서비스 다시 시작
  두 번째 실패: 서비스 다시 시작
  후속 실패: 서비스 다시 시작
3. 재시작 간격: 예) 1분
이 설정으로 MySQL이 실패해도 자동으로 복구 시도됩니다.

✅ 4단계: 테스트 및 확인
1. 시스템 재부팅
2. 웹 페이지 열어서 PHP 오류가 재발하는지 확인
3. 문제가 없으면 정상 적용 완료!

⏱️ 전체 구성 요약
Apache가 MySQL 이후 실행되도록 설정 - .bat (SC 종속성) - 직접적인 오류 해결
Apache 지연 시작 설정 - services.msc → 자동(지연된 시작) - MySQL보다 나중에 실행됨
MySQL 자동 복구 설정 - services.msc → 복구 탭 - 예외 상황 대비

📫 아래는 Apache2.4 서비스를 자동(지연된 시작)으로 설정하는 두 가지 자동화 방식입니다

✅ 1. .bat 파일로 지연 시작 자동 설정
Windows 서비스의 **시작 유형을 자동(지연된 시작)**으로 설정하는 레지스트리 수정은 .bat에서 reg add 명령을 통해 가능합니다.

📁 apache_delayed_start.bat[code]@echo off
echo [Apache2.4] 서비스를 '자동(지연된 시작)'으로 설정 중...

REM 관리자 권한 확인
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
    echo ⚠ 관리자 권한으로 실행해야 합니다.
    pause
    exit /b
)

REM Apache 서비스 시작 유형을 지연 자동으로 변경
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Apache2.4" /v DelayedAutoStart /t REG_DWORD /d 1 /f

REM 시작 유형을 자동으로 변경 (2: 자동, 0: 부팅, 3: 수동, 4: 사용 안 함)
sc config Apache2.4 start= auto

echo 설정 완료. 결과 확인:
sc qc Apache2.4
pause[/code]🔧 DelayedAutoStart = 1 은 지연 자동 시작을 의미합니다.

✅ 2. .reg 파일로 직접 설정 (수동 실행용)
📁 apache_delayed_start.reg[code]Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4]
"DelayedAutoStart"=dword:00000001[/code]1. 위 내용을 .reg 파일로 저장 (예: apache_delayed_start.reg)
2. 더블 클릭 → "예" 클릭하여 병합
📌 이후 반드시 Apache의 시작 유형을 "자동"으로 설정해줘야 지연 시작이 동작합니다.[code]sc config Apache2.4 start= auto[/code]
🔄 원래 상태로 복원하는 .bat[code]@echo off
echo Apache2.4 서비스 지연 시작 비활성화 및 종속성 초기화 중...

NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
    echo 관리자 권한 필요!
    pause
    exit /b
)

REM 지연 시작 비활성화
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\Apache2.4" /v DelayedAutoStart /f

REM 종속성 원래대로
sc config Apache2.4 depend= Tcpip/Afd

REM 시작 유형 기본 자동으로 유지
sc config Apache2.4 start= auto

echo 원래대로 복원 완료!
pause[/code]

📫 아래는 Apache2.4 서비스를 MySQL80 이후에 시작되도록 설정하고, 자동(지연된 시작) 까지 적용하며, 전체 설정을 확인하는 종합 .bat 스크립트입니다.

✅ 복합 설정 스크립트 apache_mysql_setup.bat[code]@echo off
title Apache2.4 + MySQL80 서비스 연동 및 지연 시작 설정
echo ================================
echo Apache2.4 종속성 및 지연 시작 설정
echo 관리자 권한 확인 중...
echo ================================

REM 관리자 권한 확인
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
    echo ⚠ 이 스크립트는 관리자 권한으로 실행해야 합니다.
    pause
    exit /b
)

echo [1/3] Apache2.4 서비스가 MySQL80 이후에 실행되도록 설정합니다...
sc config Apache2.4 depend= Tcpip/Afd/MySQL80

echo [2/3] Apache2.4 서비스 시작 유형을 자동으로 설정합니다...
sc config Apache2.4 start= auto

echo [3/3] Apache2.4 서비스에 '자동(지연된 시작)' 옵션을 적용합니다...
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Apache2.4" /v DelayedAutoStart /t REG_DWORD /d 1 /f

echo.
echo 설정 결과 확인:
echo --------------------------------
sc qc Apache2.4
echo --------------------------------
echo ✅ 설정 완료! 재부팅 후 정상 작동하는지 확인하세요.
pause[/code]
📝 사용 방법
1. 위 내용을 apache_mysql_setup.bat 으로 저장
2. 우클릭 → 관리자 권한으로 실행
3. 완료 후 services.msc나 웹 브라우저에서 정상 동작 여부 확인

✅ 복원 스크립트 restore_apache_mysql.bat
복원 스크립트는 Apache2.4 서비스의 종속성 및 지연 시작 설정을 원래대로 되돌리는 스크립트입니다. 아래는 복원용 .bat 스크립트입니다.[code]@echo off
title Apache2.4 + MySQL80 서비스 설정 복원
echo ================================
echo Apache2.4 설정 복원
echo 관리자 권한 확인 중...
echo ================================

REM 관리자 권한 확인
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
    echo ⚠ 이 스크립트는 관리자 권한으로 실행해야 합니다.
    pause
    exit /b
)

echo [1/3] Apache2.4 서비스 종속성 원상복구 (MySQL80 제거)...
sc config Apache2.4 depend= Tcpip/Afd

echo [2/3] Apache2.4 서비스 시작 유형을 기본 자동으로 설정...
sc config Apache2.4 start= auto

echo [3/3] Apache2.4 서비스 지연 시작 옵션 비활성화...
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\Apache2.4" /v DelayedAutoStart /f

echo.
echo 설정 결과 확인:
echo --------------------------------
sc qc Apache2.4
echo --------------------------------
echo ✅ 설정 복원 완료! 시스템을 재부팅하여 변경 사항을 확인하세요.
pause[/code]📝 사용 방법
1. 위 내용을 restore_apache_mysql.bat 파일로 저장
2. 우클릭 → 관리자 권한으로 실행
3. 완료 후 services.msc나 웹에서 복원 상태 확인

✅ 설정 복원 시 주의 사항
이 스크립트는 MySQL80 종속성 제거 및 지연 시작 비활성화로 설정을 초기화합니다.
이 복원 스크립트를 통해 언제든지 변경 사항을 되돌릴 수 있습니다.
재부팅 후 원래대로 돌아갔는지 확인하세요.

댓글목록

등록된 댓글이 없습니다.


자료 목록
번호 제목 날짜
184
🫧
05-01
183
🫧
04-30
📖
🫧
04-30
181
🫧
04-28
180
🫧
04-27
179
🫧
04-26
178
🫧
04-26
177
🫧
04-24
176
🫧
04-23
175
🫧
04-23
174
🫧
04-22
173
🫧
04-17
172
🫧
04-17
171
🫧
04-16
170
🫧
04-15

🔍 검색

회사소개 개인정보처리방침 서비스이용약관
Copyright © rainbowgarden.shop All rights reserved.