1차 DB서버 접속 실패시에 2차 DB서버 접속 시도시에 Warning이 뜨는 문제에 대하여

그누보드 애용자입니다.
DB 서버와 WEB 서버와 EMAIL 서버를 분리하여 운용중입니다.
1차 DB서버가 다운된 경우를 가정하여 2차 DB서버로 접속할 수 있도록 하기 위하여 dbconfig.php 파일을 아래와 같이 고쳐보았습니다.

실행해보았더니, 2차 DB서버로 접속은 되는데, 아래와 같은 경고문구가 뜹니다.
경고문구 안뜨면 좋겠는데, 조언을 좀 해주십시오.

dbconfig.php

<?php
 $mysql_host = "192.168.10.1"; 
// 접속이 안되는 주소임
 $mysql_user = "han********g";
 $mysql_password = "hu*******";
 $mysql_db = "han********g";
@$connect = mysql_connect($mysql_host, $mysql_user,$mysql_password);
  // 1차 디비서버로 접속 시도
if($connect){
   echo "1차 DB접속 성공<br>";
}else{
    echo "1차 DB접속 실패<br>";
    //  2차 서버로 접속 시도
  $mysql_host = "192.168.10.3"; 
// DB 접속이 되는 주소임
 $mysql_user = "han********g";
 $mysql_password = "hu*******";
 $mysql_db = "han********g";
 @$connect = mysql_connect($mysql_host, $mysql_user,$mysql_password);
 if($connect){
     echo "2차 DB접속 성공<br>";
 }else{
     echo "2차 DB접속 실패<br>";
 }
}
?>


1차 DB접속 실패
2차 DB접속 성공

Warning: Cannot modify header information - headers already sent by (output started at G:\APM_0000000\dbconfig.php:11) in G:\APM_0000000\lib\common.lib.php on line 109

Warning: Cannot modify header information - headers already sent by (output started at G:\APM_0000000\dbconfig.php:11) in G:\APM_0000000\lib\common.lib.php on line 109

Warning: Cannot modify header information - headers already sent by (output started at G:\APM_0000000\dbconfig.php:11) in G:\APM_0000000\lib\common.lib.php on line 109

Warning: Cannot modify header information - headers already sent by (output started at G:\APM_0000000\dbconfig.php:11) in G:\APM_0000000\head.sub.php on line 50

Warning: Cannot modify header information - headers already sent by (output started at G:\APM_0000000\dbconfig.php:11) in G:\APM_0000000\head.sub.php on line 52

Warning: Cannot modify header information - headers already sent by (output started at G:\APM_0000000\dbconfig.php:11) in G:\APM_0000000\head.sub.php on line 53

Warning: Cannot modify header information - headers already sent by (output started at G:\APM_0000000\dbconfig.php:11) in G:\APM_0000000\head.sub.php on line 54

Warning: Cannot modify header information - headers already sent by (output started at G:\APM_0000000\dbconfig.php:11) in G:\APM_0000000\head.sub.php on line 55

Warning: Cannot modify header information - headers already sent by (output started at G:\APM_0000000\dbconfig.php:11) in G:\APM_0000000\head.sub.php on line 56

 

|

댓글 7개

echo 를 없애도 문구가 뜨나요 ?
dbconfig.php에서 echo 부분을 다 빼버리세요...
dbconfig.php에서 echo 부분을 다 막고 해봐도,
다 삭제해버리고도 해보았습니다만,
경고 문구는 변함이 업습니다.
어딘가에 공백이 있습니다

<?

이거 위에 줄띄기가 있나 확인해보세요
dbconfig.php
1라인에 <?php 이렇게 시작합니다.

그것보다도 이 경고문구의 뜻을 어떻게 이해를 해야할지 그것이 문제인듯한데, 알 수가없네요
Cannot modify header information - headers already sent by (output started at .....dbconfig.php:26
구글 검색결과 ob_start();
를 넣어서 해결하였습니다.

<?php
ob_start();
$mysql_host = "192.168.10.1";
// 접속이 안되는 주소임
$mysql_user = "han********g";
$mysql_password = "hu*******";
$mysql_db = "han********g";
@$connect = mysql_connect($mysql_host, $mysql_user,$mysql_password);
// 1차 디비서버로 접속 시도
if($connect){
echo "1차 DB접속 성공<br>";
}else{
echo "1차 DB접속 실패<br>";
// 2차 서버로 접속 시도
$mysql_host = "192.168.10.3";
// DB 접속이 되는 주소임
$mysql_user = "han********g";
$mysql_password = "hu*******";
$mysql_db = "han********g";
@$connect = mysql_connect($mysql_host, $mysql_user,$mysql_password);
if($connect){
echo "2차 DB접속 성공<br>";
}else{
echo "2차 DB접속 실패<br>";
}
}
?>


출처: http://topnice.springnote.com/pages/2330954
양영이 개발노트에서 참조하였습니다.

header() 함수를 사용하기 전에 그 어떤 출력(공백/엔터/HTML등)도 선행되어서는 안됩니다.



그러나, 사정상 조건/분기등에 의해 (물론 피할 수 있게끔 코딩하는게 최선이지만) 뒤늦은 header() 를 사용해야 할 수가 있는데요.

이럴때는 PHP4 이상의 output buffering 기능을 사용하실 수 있습니다.



소스 코드의 최상단에 (HTML 및 그 어떤 출력도 나오기 전) 다음과 같은 소스를 삽입하세요.



ob_start();



HTML이나 기타 출력되는 값을 메모리에 저장해 두었다가 프로그램 종료시 한꺼번에 내보내는 명령입니다.

이 펑션이 호출된 이후에 header() 를 만나면 어떤 HTML 출력과도 관계 없이 정상 실행합니다.



단, 기존의 게시판이나 기타 프로그램을 수정하고 계시며, 해당 프로그램에서도 ob_start()를 중복 사용하고 있다면, 해당 프로그램에서의 ob_start() 사용 용도에 따라 HTML출력에 또다른 문제가 발생할 수 있습니다(일반적인 경우 문제 없습니다)



출처 : 지식인
질문을 올린 당사자입니다.

최종적으로 확인한 사항이라 추가로 올립니다.
dbconfig.php 의 첫머리 뿐만 아니라.
마지막 줄에도 빈칸(여백)이 하나도 없어야 됩니다.

예들들어 dbconfig.php 에 아래와 같은 빈줄이 있으면 안된다는 것입니다.
. . . .

17 }
18 ?>
19
20

dbconfig.php 에 마지막 라인 19, 20라인을 삭제해야 하고,
중요한 것은
18라인의 부등호 > 바로 뒤에 빈칸 하나라도 있으면 안되더라 것이 저의 경험에서 얻은 결론입니다.

같은 문제로 고심하시는 분에게 도옴이 되기를 바랍니다.

ob_start(); 는 문제해결의 해답이 아니었습니다.

게시판에서 첨부파일(hwp파일)을 열지 못하는 현상이 생겼었는데, dbconfig를 바로 잡고 나니 저절로 해결되었습니다.

댓글 달아주신 분들께 감사드립니다.
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기 기존 게시물은 열람만 가능합니다.

+
제목 글쓴이 날짜 조회
16년 전 조회 1,517
16년 전 조회 944
16년 전 조회 1,150
16년 전 조회 999
16년 전 조회 1,533
16년 전 조회 1,510
16년 전 조회 886
16년 전 조회 1,163
16년 전 조회 1,535
16년 전 조회 1,783
16년 전 조회 776
16년 전 조회 803
16년 전 조회 945
16년 전 조회 829
16년 전 조회 941
16년 전 조회 964
16년 전 조회 823
16년 전 조회 969
16년 전 조회 1,527
16년 전 조회 1,626
🐛 버그신고