CI 묻고 답하기

제목 업로드 파일 및 js파일이 있는 경로는 상수로 정했을 경우 어떠한 환경에서도 자동으로 경로가 잡도록 해줄려고 합니다.
카테고리 CI 2, 3
글쓴이 정수리 작성시각 2017/09/19 18:32:13
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 14021   RSS

js,업로드 폴더가 있는 경로를

 

어떠한 환경에서도 정상적으로 잡아 줄수 있도록 하려고 하는데

도저히 방법을 몰라 글을 올리게 되었습니다.

 

ci의 constants 파일에서

 

js폴더와 업로드 폴더가 있는 위치를 상수로 정해서

 

사용할려고 합니다.

 

define('JS', 'http://'.$_SERVER['HTTP_HOST'].'/~landcom/js/');
define('UPLOAD', str_replace('index.php', '', $_SERVER['SCRIPT_FILENAME']).'upload/file/');

 

스크립트 파일있는 js의 경우 http://호스트/~landcom/js 이렇게 잡아줬을 경우

사이트를 납품하는 곳에서는 경로가 달라 질수 있기에 문제가 있을 것 같습니다.

 

업로드 파일의 경우 

str_replace()를 사용하여 호스트/파일이 있는 경로 해주었을경우에는

다른 장소에서 정상적으로 경로가 잡힐 것 같습니다

 

선배님들의 저와 같은 경우 어떻게 해서 다른 장소에서도 정상적으로 경로를 잡으시나요??

 

constant 파일에서는 base_url()함수도 적용되지 않네요 ㅜㅜ

 

 다음글 로그인 시 쿠키가 생성되는 시간이 페이지로딩 보다 느린... (2)
 이전글 ci 2.2.x 버전에서의 세션 에관하여 (2)

댓글

한대승(불의회상) / 2017/09/20 07:22:23 / 추천 0

if문으로 해결되지 않나요?

if(환경1) {
   define('상수1', '...');
   define('상수2', '...');
} else if(환경2) {
   define('상수1', '...');
   define('상수2','...');
} else {
   .
   .
   .
}

 

정수리 / 2017/09/20 08:08:17 / 추천 0

@한대승

답변감사합니다

작업환경이 윈도우이든 리눅스 이든 상관없이 base_url()함수를 사용하면 어느환경에 맞춰지는 것처럼

그러한 방법은 없을까요??

변종원(웅파) / 2017/09/20 08:56:26 / 추천 0

정수리/ 위 if 구문을 함수로 만드시면 되죠. 어렵게 생각하면 한없이 어려운게 프로그램입니다.

생각을 좀 확장해보세요.

하늘치 / 2017/09/20 09:13:06 / 추천 0

이렇게 하면 안되나요?

JS 와 UPLOAD 경로를 상대경로로 define 해두고,

실 사용할 때는 base_url() 이나... 붙이고 싶은 값을 앞에 붙여서 쓰는 방법이요.

 

 

정수리 / 2017/09/20 09:21:25 / 추천 0

@변종원

답변감사합니다

제가 아직 개념이 부족해서 어렵네요

프로젝트는 거이다 끝났는데 막상

외부로 납품하였을 경우 업로드파일과,이미지,js파일 경로를 잡지못할것 같어서 불안하네요;;

회사내부에서는 프로젝트 위치가

home/users/landcom/public_html 폴더 안에 있다보니

경로는 맞출때

http://ip주소/~landcom/js/파일명 이렇게 맞춥니다

처음에는 base_url() 사용였지만

http://ip주소/~landcom/index.php/js/파일명

이렇게 index.php가 붙어서 사용하지 못하였습니다.

index.php를 지울려고 하였지만 손대지않고 index.php 화면에 출력되도록 그냥 놔두고 사용하기로 하였습니다.

그렇다 보니 상수로 

 

'http://'.$_SERVER['HTTP_HOST'].'/~landcom/js/') 사용하여 경로를 잡아준후 코드내부에서 상수를 불러서 사용하였는데

외부로 납품할경우 

url이

http://주소/~landcom

일걸라고 장담하지 못하니 막막하네요 ㅜㅜ

말씀하시는 if(환경)의 경우

환경은 url을 말씀하시는 건가요??

 

 

정수리 / 2017/09/20 09:25:08 / 추천 0

@하늘치

답변감사합니다.

예전에 회사내부에서는 사용하는 사이트도 ci를 통해서 만들었는데

 

그떄의 경우 css나js파일을 불러들일때

base_url().'/js/파일명'

이렇게 사용하였었는데

이번에도 base_url로 사용할려고 하니 경로를 못잡네요 ㅜㅜ

url에 index.php가 붙어버려서 그런지 

그런데 회사내부에서 사용하는 사이트를 만들때도 index.php 제거 하지 않고 사용하였는데 

js파일을 불러 들일 때 base_url을 사용하였을 경우 index.php가 붙지 않았는데

 

이번 프로젝트에서는 index.php가 붙어서 경로를 잡지 못해버리네요;

같은 서버안에 계정만 다른게 말이죠 ㅜㅜ

 

변종원(웅파) / 2017/09/20 09:46:09 / 추천 0
config.php 보세요. index.php 선언되어 있을 겁니다.
정수리 / 2017/09/20 09:57:56 / 추천 0

@변종원

config.php파일에서 

$config['index_page']부분을 확인해야 되는건가요?

현재 생각해보고 처리 한방법은

base_url()을 했을 경우 index.php가 붙기때문에

str_replace('index.php/', '', base_url())'.js/파일명' 이렇게 사용하여 처리 하였습니다.

이게 옳은 방법인것일까요..?

 

한대승(불의회상) / 2017/09/20 09:58:45 / 추천 0

file 헬퍼에는 site_url() 함수와 base_url()함수 2개가 준비되어 있습니다.

특성을 잘 살피셔서 골라 사용하시면 될 것 같네요.

환경은 서버 특성에 따라 달라지니 딱 집어 말하기 힘들지만 저는 주로  $_SERVER['SERVER_NAME'] 값을 기준으로 합니다.