일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 문자열 포함여부
- 오류
- Excel
- 특수문자 포함여부
- jQuery
- 일부 문자열 포함여부
- implode()
- myshortcut
- 배열
- error
- srtpos()
- explode()
- getimagesize()
- 서버부하
- primary_key
- 노션
- ES6
- formula
- JavaScript
- 정규식
- strpos()
- 지직거림
- 중간에추가
- 1064
- SQL
- MySQL
- includes()
- 동작안함
- php
- 이걸 그렇게 쓸 줄은 몰랐지
- Today
- Total
코딩짜는 일상
[PHP+MySQL] config 파일의 필요성 - 로컬(또는 테스트 서버) 작업파일을 바로 업로드하면 오류나는 이유 본문
처음으로 포트폴리오를 만들 때 일입니다.
로컬(=테스트 서버)에서 작업할 땐 잘 동작하던 프로그램이 호스팅 서버에 업로드 된 후
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의 호스팅 서버에 올려도 똑같이 작동하죠.
만약 호스팅 서버가 만료되어 도메인을 바꾸더라도 수정하기 쉬워질 것입니다!
'IT 개발 팁' 카테고리의 다른 글
[Excel 오류] VLOOKUP 결과와 다른 값이 반환될 때 - excel에서 DB로 INSERT하기 전 처리 (0) | 2022.04.19 |
---|---|
[DB] 테이블, 컬럼 이름 짓기 (0) | 2022.03.17 |