묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
include 문제입니다.. 꼭 좀 도와주세요 *^^*
2005.03.10 21:49
홈페이지를 한번 만들어 보려고.. 카운터부터 만드는데..
처음 시작부터 이렇게 어렵습니다. ㅜㅜ
로컬에서 APM 으로 테스트 중입니다.
루트에 main.html
include 폴더에 config.php, dbconn.php 이렇게 2개의 파일이 있고
counter 폴더에 counter.php 가 있습니다.
==================== config.php ====================
<?
localhost
userid
password
dbname
?>
====================dbconn.php ====================
<?php
$filename="config.php";
$flag=file_exists($filename);
if($flag){
$fp=fopen($filename,r);
$data=fread($fp,filesize($filename));
fclose($fp);
$data = str_replace("<?","",$data);
$data = str_replace("?>","",$data);
$data=explode("n",$data);
}
$hostname = trim($data[1]);
$userid = trim($data[2]);
$password = trim($data[3]);
$dbname = trim($data[4]);
$connect = mysql_connect($hostname, $userid, $password) or die(mysql_error());
mysql_select_db($dbname,$connect);
?>
====================counter.php ====================
<?php
// include "../include/dbconn.php"; 최초 구문
include "./dbconn.php"; // 1번 에러때문에 수정한 부분
?>
counter.php 를 실행하면 아래와 같은 에러가 납니다.
에러1 내용 :
Warning: mysql_connect(): 'ODBC@localhost' 사용자는 접근이 거부 되었습니다. (Using password: 아니오) in
g:aaahtdocsmsosincludedbconn.php on line 19 'ODBC@localhost' 사용자는 접근이 거부 되었습니다. (Using password: 아니오)
예를 들어 dbconn.php 에서 값을 찍어보면 $password 를 출력해보면 이상없이 나오는데
counter.php 에서 $password 를 출력해보면 아무런 값도 나오지 않습니다.
그래서 counter.php 를 include 폴더에 같이 넣고 테스트 해 보니 아무 이상없이 잘 나옵니다.
이렇게 counter.php 문제를 해결하고
==================== main.html ====================
<?php
include "../include/counter.php";
?>
main.html 에서 counter.php 를 include 하여 카운터 값을 출력하려니..
에러2 내용
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in g:aaahtdocsmsosincludecounter.php on line 33
:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in g:aaahtdocsmsosincludecounter.php on line 50
이렇게 나옵니다.
에러가 나는 부분의 counter.php 를 보면
24 // 전체카운터 구하기
25 $query1 = "select * from tb_lec_cnt";
26 $result1 = @mysql_query($query1,$connect);
27
28 if(!$result1){
29 echo mysql_errno().": ";
30 echo mysql_error()."<br>";
31 }
32
33 while($data1 = mysql_fetch_array($result1)){
34 global $total_cnt;
35
36 $total_cnt += $data1[user_cnt];
37 if($total_cnt == ""){
38 $total_cnt = 1;
39 }
40 }
이 부분인데요..
33 행을 보면 특별히 이상이 있는것 같지는 않습니다.
원래는 config.php 와 dbconn.php 의 내용이 없었고 counter.php 에 그냥 DB 를 연결하는 소스를 사용했을땐 이상없이 되던것이
config.php 와 dbconn.php 부분으로 DB 연결 부분을 나누고 나서 이런 오류가 납니다.
왜 그런것인지.. 혹은 해결방법은 어떤것인지 가르침을 주세요..
1번 에러과 2번 에러가 나는 이유를 함께 알려주시면 더욱 감사하겠습니다.
긴 질문 읽어주셔서 고맙습니다 *^^*
처음 시작부터 이렇게 어렵습니다. ㅜㅜ
로컬에서 APM 으로 테스트 중입니다.
루트에 main.html
include 폴더에 config.php, dbconn.php 이렇게 2개의 파일이 있고
counter 폴더에 counter.php 가 있습니다.
==================== config.php ====================
<?
localhost
userid
password
dbname
?>
====================dbconn.php ====================
<?php
$filename="config.php";
$flag=file_exists($filename);
if($flag){
$fp=fopen($filename,r);
$data=fread($fp,filesize($filename));
fclose($fp);
$data = str_replace("<?","",$data);
$data = str_replace("?>","",$data);
$data=explode("n",$data);
}
$hostname = trim($data[1]);
$userid = trim($data[2]);
$password = trim($data[3]);
$dbname = trim($data[4]);
$connect = mysql_connect($hostname, $userid, $password) or die(mysql_error());
mysql_select_db($dbname,$connect);
?>
====================counter.php ====================
<?php
// include "../include/dbconn.php"; 최초 구문
include "./dbconn.php"; // 1번 에러때문에 수정한 부분
?>
counter.php 를 실행하면 아래와 같은 에러가 납니다.
에러1 내용 :
Warning: mysql_connect(): 'ODBC@localhost' 사용자는 접근이 거부 되었습니다. (Using password: 아니오) in
g:aaahtdocsmsosincludedbconn.php on line 19 'ODBC@localhost' 사용자는 접근이 거부 되었습니다. (Using password: 아니오)
예를 들어 dbconn.php 에서 값을 찍어보면 $password 를 출력해보면 이상없이 나오는데
counter.php 에서 $password 를 출력해보면 아무런 값도 나오지 않습니다.
그래서 counter.php 를 include 폴더에 같이 넣고 테스트 해 보니 아무 이상없이 잘 나옵니다.
이렇게 counter.php 문제를 해결하고
==================== main.html ====================
<?php
include "../include/counter.php";
?>
main.html 에서 counter.php 를 include 하여 카운터 값을 출력하려니..
에러2 내용
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in g:aaahtdocsmsosincludecounter.php on line 33
:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in g:aaahtdocsmsosincludecounter.php on line 50
이렇게 나옵니다.
에러가 나는 부분의 counter.php 를 보면
24 // 전체카운터 구하기
25 $query1 = "select * from tb_lec_cnt";
26 $result1 = @mysql_query($query1,$connect);
27
28 if(!$result1){
29 echo mysql_errno().": ";
30 echo mysql_error()."<br>";
31 }
32
33 while($data1 = mysql_fetch_array($result1)){
34 global $total_cnt;
35
36 $total_cnt += $data1[user_cnt];
37 if($total_cnt == ""){
38 $total_cnt = 1;
39 }
40 }
이 부분인데요..
33 행을 보면 특별히 이상이 있는것 같지는 않습니다.
원래는 config.php 와 dbconn.php 의 내용이 없었고 counter.php 에 그냥 DB 를 연결하는 소스를 사용했을땐 이상없이 되던것이
config.php 와 dbconn.php 부분으로 DB 연결 부분을 나누고 나서 이런 오류가 납니다.
왜 그런것인지.. 혹은 해결방법은 어떤것인지 가르침을 주세요..
1번 에러과 2번 에러가 나는 이유를 함께 알려주시면 더욱 감사하겠습니다.
긴 질문 읽어주셔서 고맙습니다 *^^*
댓글 2
-
Dilemma
2005.03.11 10:36
-
김윤희
2005.03.17 19:45
include 개념을 잘못 알고 있었네요..
이젠 확실히 알았습니다.
그런데 include 에 관한 이런 문제를 그 어느곳에서도
지적해 놓은것을 보질 못했는데..
liebe4u//
덕분에 잘 해결하였습니다.
고맙습니다.
윤희님은 현재 인클루드의 개념에 대해 제대로 인지하지 못하고 계신거 같은데요,
인클루드를 하게되면 인클루드가 된 파일이 인클루드를 한 파일의 경로로 됍니다.
말이 좀 헷갈릴 수 있겠는데.. 위의 1번 에러로 예를 들어보겠습니다.
config.php, dbconn.php 이 파일들은 서로 같은 폴더에 있습니다. 그러므로 인클루드시 아무런 문제가 없습니다.
하지만 counter.php에서 dbconn.php 파일을 인클루드를 하게되면 dbconn.php 파일은 include 폴더가 아닌
counter 폴더가 자신의 폴더로 알게 된다는 것이지요..
그러므로 config.php 파일을 불러들일 수 없게되고, 아이디와 비번도 불러올 수 없게되는겁니다.
이후로는 디비연결도 안되고, 이하의 구문에서 에러가 발생하게 되겠지요..
암튼 첫 테스트시에는 파일들을 모두 한 폴더에 둔 상태에서 테스트를 해보시기 바랍니다.
php연습, 확인도 하기전에 다른 여러문제들에 부딪쳐 더 혼란스레 시간이 낭비될 수 있으니까요..
그럼 잘 해결하시길..