하드웨어 서버 바꾸기?? (PHP, Mysql, Apache2)

guy123의 이미지

안녕하십니까? 현재 KT의 MyIP로 서버를 돌리는데, 속도도 문제고
안정성이 떨어져서 IDC로 넣을까 합니다. 따라서 랙형태의 서버를
한개 주워서(?) Wowlinux를 깔고, 현재의 서버의 DB를 덤프시켜
옮기고, 웹데이터를 tar로 묶어 옮겼습니다.

Wowlinux 파란R2가 아파치 2.x가 아니더군요. (현 서버는 2.x)
혹시나하는 마음에 데이터를 옮겼습니다. 게시판은 정상적으로
돌아가는데, 상품정보쪽이 깨지더군요.
(이때부터 불안불안해 집니다.)

그래서, 아파치 2를 받아 현 운영서버와 유사한 환경으로 만들었습니다.
웹데이터 디렉토리도 동일하게하고.. httpd.conf 그래도 복사하고
PHP 다시 컴파일하고, 했는데. 이제는 상품정보쪽은 그나마
사진과 그림이 나오는데, 게시판이 깨지네요.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/~~/board/list.php on line 28

이 부분을 발취해보면
$sql="select count(no) as no from $board_name";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
이렇습니다. 1번째 문장을 mysql 커멘드모드에서 날리면 게시판의
글 수가 나타납니다. 그럼. $sql=254 (예를 들어 254가 들어가겠죠?)
그럼. mysql_query(254)인데. 여기서 값이 없거나 False라는
뜻이더군요.

본 문제가 프로그램쪽으로 문제는 없는 것 같습니다. (현업 서버에서는
잘 돌아갑니다.) 따라서, 혹시 PHP, apache, mysql의 버전과 관련이
있나요? 아니면 php.ini를 수정하면 되는 것인지???

현업의 PHP버전은 4.2.1이고 새로 랙형 서버는 4.3.9입니다.
mysql은 3.23.47이고 랙 서버는 3.23.49입니다.

혹시 아시는 분 답변 좀 주세요. 옮기는 것도 쉽지가 않군요. ^^;

codebank의 이미지

일단...
WowLinux파란은 예전에 나온거라 최신 버젼의 프로그램이 제공되지 않습니다.
Fedora나 한컴 또는 한글과 컴퓨터에서 제공하는 배포판을 사용하거나 Debian이나
Gentoo같은 배포판을 이용하시는게 좋습니다.

문제에대한 부분은 잘못해석했습니다.
$sql = 254가 들어가는게 아닙니다. $sql에는 "SELECT count..." 부분의 문자열이
들어가죠.
그리고 그 문자열을 mysql_query로 보내서 결과값을 $result로 받게 됩니다.
경고의 경우 mysql_fetch_array()에서 발생했으니 이부분에서 원인을 해결해야
합니다.
대부분 경고를 발생시키는 원인은 잘못된 SQL때문에 결과값이 없는데 그 배열을
가져오려고 할때 발생합니다.

$result = mysql_query ($sql);
if (!$result) {
  print mysql_error ($connect);
  exit;
}
$row = mysql_fetch_array ($result);

이렇게 해보시면 왜 에러가 나왔는지를 확인할 수 있을겁니다.
위 코드중 $connect는 이전 mysql_connect에서 받은 값을 사용하면 됩니다.
대부분의 경우 mysql_query에서 가져온 값이 없을때 많이 발생하는것으로 알고
있습니다.
위 SQL문을 MySQL에서 직접 넣어서 확인해 보는게 좋을겁니다.

------------------------------
좋은 하루 되세요.

지리즈의 이미지

가장 쉬운 것은 몽땅 덤프를 하는 방법도 있습니다.

[root@ns2 home]# cd /home
[root@ns2 home]# pwd
/home
[root@ns2 home]# ls -1 / | grep -v "^\(home\|proc\|tmp\|lost\)" | awk '{ print "tar cvfzpP "$1".tar.gz /"$1}' | sh

이것을 gentoo livecd를 이용해서
새 시스템에 tar xvfzPp로 풀고,
적절히 커널이나 module.conf, fstab
기타 grub.conf나 lilo.conf등과 네트워크
설정을 수정하면
완전히 새시스템으로 복사이전이 가능하죠...

만약, 새로히 시스템을 구축해서
이전하시길 원하신다면...
가능한 배포본기본 설치쪽을 이용하고,
"상품정보쪽이 깨지는" 쪽의 원인을 알아보겠습니다.

apache-php-mysql일 경우라면,
요즘 보라넷에 올라있는 wowlinux paranR2면
상당히 신뢰할 수 있는 서비스가
가능한 것으로 판단됩니다...

몇몇 기능을 제외하고는 아파치 버전2와 버전1차이는
거의 없습니다.

yum을 이용한 업데이트를 원하신다면,
차라리 redhat 7.3이나 redhat 9을 이용하실 것을
권하고 싶구요.

위의 배포본들도...몇몇 설정만 적절히 변경해준다면,
바로 서비스가 가능합니다.

There is no spoon. Neo from the Matrix 1999.

익명 사용자의 이미지

Codebank님 및 지리즈님 답변 감사합니다.
원인을 찾아보니 위의 저의 소스에서 $board_name을 받아오지 못하는군요.
즉, http://....../board/list.php?board_name=board 로 날리는데,
이놈의 board가 변수 $board_name으로 전달되는 않습니다.
옛날의 전역변수, 지역변수 차이인것 같은데,
어디 다른쪽에서 전역변수는 설정을 해야 합니까??

guy123의 이미지

아. 감사하고, 죄송합니다.
/usr/local/lib/php.ini에 보니 전역변수 설정 옵션이 있더군요.
----------------------------
register_globals = ON
----------------------------
이 놈을 Off에서 On하니까 변수값이 넘어오더군요.

감사합니다.

익명 사용자의 이미지

이우호 wrote:
아. 감사하고, 죄송합니다.
/usr/local/lib/php.ini에 보니 전역변수 설정 옵션이 있더군요.
----------------------------
register_globals = ON
----------------------------
이 놈을 Off에서 On하니까 변수값이 넘어오더군요.

감사합니다.

그거 온 시키면 안 됩니다.
보안상 좋지 않지요.
세션,쿠키 변수등도 모두 조작될수 있습니다.
필요한 변수들만 추출하는게 낫지요.
제로보드도 그렇게 하던데..

익명 사용자의 이미지

제로보드는 lib.php에서 옵션을 스스로 켜줬던 걸로 기억하는데요.

그 옵션이 GET method로 변수를 받아올 수 있는지를 설정했던 거 같습니다.

@ 추측입니다. 죄송합니다. ㅡㅜ

progcom의 이미지

Anonymous wrote:
이우호 wrote:
아. 감사하고, 죄송합니다.
/usr/local/lib/php.ini에 보니 전역변수 설정 옵션이 있더군요.
----------------------------
register_globals = ON
----------------------------
이 놈을 Off에서 On하니까 변수값이 넘어오더군요.

감사합니다.

그거 온 시키면 안 됩니다.
보안상 좋지 않지요.
세션,쿠키 변수등도 모두 조작될수 있습니다.
필요한 변수들만 추출하는게 낫지요.
제로보드도 그렇게 하던데..

보안상 좋지 않은건 맞습니다만, 이전에 쓰던 프로그램을 수정하기 전에는 켜도 상관 없습니다. (그리고 내부적으로 처리가 제대로 되어있으면 조작해도 전혀 문제 없는 코드도 많이 존재합니다)
제로보드 방식은 그냥 켜놓은거나 마찬가지입니다. (전부다 extract 해버리죠?)혹시라도 제로보드 코드를 레퍼런스로 보고 계신다면, 바로 그만두시길 권합니다. :| 그냥 설치해서 사용하기는 편할지 몰라도, 코드 자체는 스파게티일 뿐입니다. 8)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.