코딩짜는 일상

[PHP+MySQL] config 파일의 필요성 - 로컬(또는 테스트 서버) 작업파일을 바로 업로드하면 오류나는 이유 본문

IT 개발 팁

[PHP+MySQL] config 파일의 필요성 - 로컬(또는 테스트 서버) 작업파일을 바로 업로드하면 오류나는 이유

Remily 2022. 4. 1. 17:49
반응형

처음으로 포트폴리오를 만들 때 일입니다.

 

로컬(=테스트 서버)에서 작업할 땐 잘 동작하던 프로그램이 호스팅 서버에 업로드 된 후

Warning
include(C:/프로젝트명/database.php): failed to open stream: No such file or directory in
C:\프로젝트명\index.php

이런 메시지를 출력했습니다.

 

 

 

이유는 간단했습니다.

 

로컬에서 작업할 때 설정한 파일의 url경로가 호스팅 서버로 오면서 달라졌기 때문이죠.


그래서 include, <form>, <a> 등등...

url 경로 설정이 들어가는 모든 요소에서 오류를 일으켰습니다.

 

저는 프로젝트 구분을 위해 /프로젝트명/index.php 이렇게 경로를 사용했고
호스팅서버에선 프로젝트 구분이 필요 없었기에 경로가 /index.php였기 때문입니다.

 

 

 


본론

 

이건 경로만 수정해주면 금방 해결되는 문제입니다.

제 경우는 ctrl+h 로 '/프로젝트명'을 검색한 뒤 전부 공백으로 치환해 주었습니다.

 

문제는 이 작업이 귀찮고 까먹을 확률도 높다는 점이죠;;

 

또한 상대경로를 써서 해결할 수도 있지만 만약 새로운 프로젝트를 만든다면?

그래서 과거 프로젝트에서 현 프로젝트로 정보를 불러올 일이라도 생긴다면??

 

 

 

여기서 필요한 것이 config 파일입니다!


인터넷에 검색해보면 주로 프로그램의 설정값이 들어가는 곳이라고 하죠?
여기에 경로값을 함수로 넣어주고 include로 불러와 쓰는 겁니다.


그 후 로컬과 호스팅 서버의 config를 다르게 설정해주면,

앞으로는 바로바로 작업 파일을 업로드해도 오류가 없을 겁니다!

 

 

 


실습

 

config.php

$_conf=array();

$_conf['domain'] = $_SERVER['HTTP_HOST'];
$_conf['doc_home'] = $_SERVER['DOCUMENT_ROOT'];

$_conf['link'] = "http://호스팅서버 url";
	// 로컬에 위치한 config파일이라면 "http://localhost/프로젝트명"이 들어가겠죠?
$_conf['link2'] = "http://호스팅서버 url 2";
	// "http://localhost/프로젝트명2"

 

index.php

include "/config.php";
include $_conf['link']."/database.php"; //데이터베이스를 연결하는 파일입니다.
									  //연결정보는 $db함수에 담겨있다고 가정합시다.

$list = mysql_query("SELECT * FROM member;", $db);
print_r($list);

 

이제 위 파일들을 사용하면 데이터베이스 안의 member테이블의 내용을 전부 출력하게 됩니다!

그리고 이 파일 2개를 그대로 프로젝트2의 호스팅 서버에 올려도 똑같이 작동하죠.

 

만약 호스팅 서버가 만료되어 도메인을 바꾸더라도 수정하기 쉬워질 것입니다!

반응형