1차 DB서버 접속 실패시에 2차 DB서버 접속 시도시에 Warning이 뜨는 문제에 대하여 정보
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
댓글 전체

다 삭제해버리고도 해보았습니다만,
경고 문구는 변함이 업습니다.

<?
이거 위에 줄띄기가 있나 확인해보세요
1라인에 <?php 이렇게 시작합니다.
그것보다도 이 경고문구의 뜻을 어떻게 이해를 해야할지 그것이 문제인듯한데, 알 수가없네요
Cannot modify header information - headers already sent by (output started at .....dbconfig.php:26
를 넣어서 해결하였습니다.
<?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를 바로 잡고 나니 저절로 해결되었습니다.
댓글 달아주신 분들께 감사드립니다.