경로 처리에 관한 질문
본문
<?php
// /test/t.php
$dir = substr($mb_id, 0, 2);
$image_pr = G5_DATA_PATH."/member_image/$dir/".$mb_id.".gif";
if( is_file( $image_pr )) { echo '존재';?>
<img src="<?=$image_pr?>" width="100px" height="100px" style="border:1px solid #333333;">
<?php } else { echo '없슴'; ?>
<img src="./default.png" width="100px" height="100px" style="border:1px solid #333333;">
<?php } ?>
위 코드에서 파일이 존재하는데 이미지는 나오질 않네요
$image_pr = G5_DATA_PATH."/member_image/$dir/".$mb_id.".gif"; // 결과 > D:/xampp/htdocs/g5/data/member_image/13/130000.gif
이 코드를
$image_pr = "../g5/data/member_image/$dir/".$mb_id.".gif";
라고 변경하면 나옵니다.
직접 태그를 써봐도
<img src="D:/xampp/htdocs/g5/data/member_image/13/130000.gif"> 안나옵니다.
침고로
echo '현재파일: '. __FILE__;
해보면 t.php 의 위치는
D:\xampp\htdocs\test\t.php
입니다.
!-->
답변 4
경로를 해서 앞에 풀 경로가 와서 그럴거 같네요 파일 체크를 지금 처럼 하고 이미지 불러올때는 G5_DATA_URL로 인터넷 주소로 불러와보세요.
$image_pr = G5_DATA_PATH."/member_image/$dir/$mb_id.gif";
다음과 같은 방법으로 해 볼 수 있을 것 같습니다.
$image_pr = "http://localhost/g5/data/member_image/$dir/".$mb_id.".gif";
이미지 파일의 경로를 절대 경로로 지정하는 것이 좋습니다
또는 더 일반적인 방법으로는 PHP의 $_SERVER['DOCUMENT_ROOT']를 사용하여 웹 서버의 루트 디렉토리를 동적으로 가져와서 이미지 경로를 구성하는 것이 좋을 수 있습니다.
예를 들면
$image_pr = $_SERVER['DOCUMENT_ROOT'] . "/g5/data/member_image/$dir/".$mb_id.".gif";
이렇게 하면 상대 경로 문제를 피하고 웹 서버가 어디에 설치되었든 동일한 경로를 참조할 수 있을 것으로 생각합니다
!-->!-->
G5_DATA_PATH."/member_image/$dir/".$mb_id.".gif"; <= 해당 경로는 web url이 아닌, 서버의 절대경로입니다.
이미지를 호출하기 위해서는 위의 G5_DATA_PATH 를 G5_DATA_URL로 변경해 줘야 합니다.
즉 파일의 존재유무를 확인하기 위해서는 G5_DATA_PATH를 사용하고
파일을 불러오기 위해서는 G5_DATA_URL 을 사용해야 합니다.