Notice: Only variable references should be returned by reference in /home/ghj/public_html/components/Eolin.PHP.Core.php on line 980

 
변경전 -> function & selectNodes($path)
변경후 -> function selectNodes($path)

아무리 봐도 참조값을 리턴하지는 않습니다. &를 삭제하니
플러그인도 정상적으로 잘돌아가는군요.

플러그인을 하나라도 사용하면 아래와 같은 메세지가 나오네요(references 값을 리턴하지 않아서 나오는 메세지인듯..)

Notice: Only variable references should be returned by reference in /home/ghj/public_html/components/Eolin.PHP.Core.php on line 980

Warning: Cannot modify header information - headers already sent by (output started at /home/ghj/public_html/components/Eolin.PHP.Core.php:980) in /home/ghj/public_html/blog/index.php on line 2463

그리고 하나더 1.05버젼에서는 1.04이전에 사용하던 플러그인과 호환이 되지 않나요?
1.04 이하버전에서 사용해오던 플러그인을 새롭게 변경된 양식으로 만들어 주지 않으면
설치된 플러그인목록에 표시되지 않습니다.
플러그인 제작하시는분들이 수정하시겠지만 호환도 되면 좋을것 같네요.
1.05설치 하고 나니 플러그인이 안되요 ㅠ.ㅠ 라는 게시물이 많아질것 같아서요.

아래는 일반적으로 1.04이하 버전에서 작성해오던 index.xml파일 입니다.

설치된 플러그인목록에 표시되지 않음

현재 블로그 접속자수 플러그인 작성:

<?xml version="1.0.1" encoding="utf-8"?>
<plugin version="1.0.1">
  <title>Display Currently Connected Users</title>
  <link>http://RealProject.NET</link>
  <version>1.0.1</version>
  <description>현재 블로그 접속자 수를 출력해줍니다. 스킨의 원하시는 곳에 '현재 접속자: [##_CurrentConnect_##] 명' 같이 넣어주시면 됍니다.</description>
  <license>GPL</license>
  <author link="http://RealProject.NET">JCrew</author>
  <safety changeData="no" exposeData="no" accessLocal="no" accessRemote="no" accessRaw="no" />
  <requirements>
    <tattertools>1.0.4</tattertools>
  </requirements>
  <binding>
    <tag name="CurrentConnect" handler="DisplayCurrentConnect" />
  </binding>
</plugin>

1.05양식에 맞게 수정하면 목록에 출력이됨

현재 블로그 접속자수 플러그인 작성:

<?xml version="1.0" encoding="utf-8"?>
<plugin version="1.0">
  <title xml:lang="ko">현재 블로그 접속자 수를 출력</title>
  <title xml:lang="en">Display Currently Connected Users</title>
  <link>http://RealProject.NET</link>
  <version>1.0</version>
  <description xml:lang="en">Display Currently Connected Users. To enable this, skin's HTML should contain [##_CurrentConnect_##] tag.</description>
  <description xml:lang="ko">현재 블로그 접속자 수를 출력해줍니다. 스킨의 원하시는 곳에 '현재 접속자: [##_CurrentConnect_##] 명' 같이 넣어주시면 됍니다.</description>
  <license>GPL</license>
  <author link="">JCrew</author>
  <author xml:lang="ko" link="http://RealProject.NET">JCrew</author>
  <author xml:lang="en" link="http://RealProject.NET">JCrew</author>
  <safety changeData="no" exposeData="no" accessLocal="no" accessRemote="no" accessRaw="no" />
  <requirements>
    <tattertools>1.0.4</tattertools>
  </requirements>
  <binding>
    <tag name="CurrentConnect" handler="DisplayCurrentConnect" />
  </binding>
</plugin>

※ 아래부분을 주석처리해도 결과는 마찬가지 입니다.
ini_set('error_reporting', E_ALL);
@ini_set('display_errors', 'on');

환경설정에서 English라고 지정을 하면 영문으로 다 출력이 되는데 한페이지만
한글로 나오는군요.
http://ghj.pe.kr/attach/1/1076960897.png

테스트 환경

URL : http://ghj.pe.kr (개인Blog)
OS : Linux  AnNyung 1.2 R3 
TatterTools Ver : 1.0.5 Beta 1
PHP : PHP Version 5.1.2
        register_globals = On
MYSQL : 5.0.18
Apache : 1.3.34 

* checkup은 완료된 상태

config.php 상단에 아래와 같이 설정
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'on');

그리고 새글쓰기 할때 유마님이 지적하신부분

유마 작성:

아무 파일을 올리지 않았는데도, 기본적으로 2,334 kb 라고 되어 있습니다.

전 53,175Kbyte라고 나오는군요. 업로드 Max값은 아닌것 같아요. 전 100M까지 가능하거든요.

글수정할때는 문제가 없지만 새로운 글을 쓸때  파일 업로드 하면 아래와 같은 메세지가 나옵니다.
http://ghj.pe.kr/attach/1/1228077387.gif

확인을 클릭하면 대기중이라고 나옵니다..

http://ghj.pe.kr/attach/1/1066106984.gif

글수정시 파일을 추가할때도 매끄럽지 않은 부분이 있군요
수정시에 파일용량은 정상적으로 보이지만 새로운 파일을 추가하면
아래와 같이 null 이라고 나옵니다.

http://ghj.pe.kr/attach/1/1164234121.gif

저도 가볍게 시작할께요  (Notice)^^
http://ghj.pe.kr/attach/1/1057985792.png

getAttachmentSize 함수에서 $ownerStr $parentStr 변수초기화만 해주면 되겠죠^^

6

(5 답글들, 잡담하기에 작성)

수고하셨습니다.^^  즐거운 맘으로 열심히 테스트 해보겠습니다.

7

(9 답글들, 잡담하기에 작성)

감기 조심하세요 몸아프면
만사가 다 귀찮아 지니까요

전 저녁마다 재즈댄스를 해서 그런지 건강하답니다
살이 너무 많이 빠져서 탈이지만

ㅋㅋ 재즈댄스 하세요 감기도 안걸리고 몸도 건강하고
이쁜언니들도 많아요

8

(6 답글들, 잡담하기에 작성)

Chief Nogada Officer

CNO는 기업의 정보와 네트워크 업무를 총괄하는 네트워크 최고경영자를 말한다. 기업이 미래를 결정할 수 있는 중요한 집단으로 떠오르고 있다.

기업에서 전산업무를 담당하는 임원, 즉 CIO는 CNO의 한 형태라고 할 수 있으며, CNO는 CIO보다 좀 더 진보된 21세기형 정보관리 전문 경영자를 일컫는다.

CIO가 정보의 수집, 분류, 가공과 데이터베이스(DB)화 및 경영정보 시 스템(MIS) 구축에 초점을 맞춘 것이라면 CNO는 네트워크상에서의 유통한 정보 활용가치의 극대화까지 포함한 개념이다.

기업내 정보처리는 물론 네트워크 구축과 21세기 첨단산업 기술력을 제 공하게 된다.

Nogada가 맞는지.. 아니면 Network인지 잘 모르겠군요..
거의 비슷한것 같은데 ㅋㅋ

9

(10 답글들, 잡담하기에 작성)

테터툴즈를 이용해서 가장많은 글을 포스트하고 있는 블로그는?
어디일까요 이벤트 같은거 해도 재미있겠네요^^
가장글이 많은블로그에 훈장(이미지)하나주고
테터공식홈페이지에 링크 걸어 주고

10

(10 답글들, 잡담하기에 작성)

아래와 같이 찾았는데요.
다른성향으로 검색해봐도 글수가 많은 블로그들이 많습니다.

성향으로 찾기  >  강력한 지도자

네이버 작성:

생을 그리는 작업실                                       88457
世界最高.最多의BLOG에 도전한다.                          81906
★★★★★★★동대문패션 의류 인짱★★★★★★★         43681
그물에 걸리지않는 바람처럼 자유롭게 살아가는 人^^*       28477
Cisco                                                    26908
거송(ksg8949)님의 블로그                                 22804
국가전략가 황경익                                        22375
내가 몇 년 동안에 걸쳐 터득한                            20228
사이버교회                                               19806
...

게시판보니까 로그인이 안된다는 분들이 많네요.
저도 ghj.pe.kr multi.ghj.pe.kr setup.ghj.pe.kr 왔다갔다 하니까
한번씩 로그인이 안될때가 있더라구요.
안되면 그냥 안되던지 됐다 안됐다 하는게 버그잡기가 젤 힘들죠.
로그인부분은 특별관리 해야 될것 같은 느낌이드네요.

아래는 로그인부분 체크를 위해서 간략히 정리해 봤습니다.

1. $service['domain'] = "www.ghj.pe.kr"; 이라고 되어있고
ghj.pe.kr로 접속해서 로그인하면 로그인되지 않는다.

2. $service['domain'] = "ghj.pe.kr"; 이라고 되어있고
www.ghj.pe.kr로 접속해서 로그인하면 로그인되지 않는다.

3. 싱글사용자인데 config.php에
$service['type'] = ''; 되어있으면 로그인 화면조차 출력되지 않는다.

4. $service['type'] = 'single'; 로 되어 있으면 로그인이 된다.

5. 혹시 p3p?

microsoft 작성:

서로 다른 도메인을 포함하는 프레임 구조로 사이트를 IE6에서 열게 되면,
쿠키가 적용되지 않습니다.
이유는 마이크로 소프트에서 쿠키 정보의 남용을 막기 위해 p3p (Platform for Personal Preferences)
규약을 도입했기 때문입니다.
p3p (Platform for Personal Preferences) 규약은 W3C ( World wide Consortium )에서
만들어 졌습니다.

(마이크로 소프트 p3p 정책 http://msdn.microsoft.com/library/defau … olicy.asp)
(W3C - p3p 규약 http://www.w3.org/TR/2002/REC-P3P-20020416/ )

그래서 다른 주소지로 연결되는 프레임구조로(특히 포워딩 고정 연결시) 웹페이지가 열리게 되면,
쿠키가 적용되지 않게 됩니다.

config.php 아래 정보(허용하는 규약)도 입력해봤습니다.

@Header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');

잘모르겠네요 로그인이 잘되는지... P3p 설정해놓으면 2번은 해결되겠네요 www에서 로그인 안되는 문제 위에 옵션들이
다무얼 뜻하는지는 잘 모르겠어요 누가 설명좀 해주세요^^

그밗에도 많은 경우가 있겠네요.

6. 제일 의심이 가는 녀석은 쿠키  TSSESSION_LOGINID

아직물증이 없어서.. 조사하면 다 나오겠죠^^

7. 혹시 config.php에 에 앞뒤로 공백이?
config.php 앞뒤로 공백이 있으면 로그인 실패..
세션자리에 이미 공백이 자리를 차지하고 있어서 세션이 생성안됨.

--앞--<?
$database['server'] = 'localhost';
$database['database'] = '설정에맞게';
$database['username'] = '설정에맞게';
$database['password'] = '설정에맞게';
$database['prefix'] = '설정에맞게';
$service['type'] = '설정에맞게';
$service['domain'] = '설정에맞게';
$service['path'] = '설정에맞게';
$service['skin'] = '설정에맞게';
?>--뒤--

12

(10 답글들, 잡담하기에 작성)

페이징처리도 분할인덱스를 활용한다면 더욱 빨라 지겠죠^^

13

(10 답글들, 잡담하기에 작성)

N사 블로그를 보니 글수가 8만건이 넘어가는 곳이 있더군요.
테터툴즈를 이용해서 만든 블로그중에 글이 많이 등록되어 있는곳이 있나요

덧붙여 테터툴즈에 8만건의 글이 있다면 이용하는데 문제점은
없을까요?

전에 저도 php.ini 설정을 손대지 않고 해결할려다가
포기했는데요

config.php 제일상단에 아래와 같이 코드를 추가하니까 동작이 되네요 >.<

if(intval(ini_get("session.auto_start")) == 1)
{
   @session_destroy();
   @ini_set('session.auto_start', '0');
}

다양한 경우에서의 테스트가 필요하겠지만 우선은 별다른 문제가
없어 보이네요.

세션자동시작일경우에는 현재의 세션을 날리고 세션을 자동시작
하지 않게 설정을 하니니까 로그인이 잘됩니다.

당연히 php.ini는 아래와 같이 되어 있구요.

session.auto_start = 1

문제가 해결되었으면 좋겠네요.

다양한 경우에 로그인이 안되겠지만 아래와 같은 경우도 로그인이
되지 않는 경우입니다.( WEB기반 테터툴즈 설치 프로그램을 테스트해보면서 잘사용하지 않는 서버에 테터툴즈를 설치하고 관리자로 로그인을 할려고 하니  되지 않더라구요.)


원인
php.ini의 설정중 아래라인
...
session.auto_start = 1
...
웹서버가 시작함에 따라 자동으로 세션을 시작하기 위해서 위와 같이
설정을 합니다. 보통 저부분은 거의 셋팅을 하지않고 코딩시
session_start(); 라고 입력해줍니다.

But 리눅스 배포판에 따라서 default로 1로 설정되는 경우가 있습니다.
보통 session.auto_start = 0 으로 되어있습니다.

그럼 왜 이설정이 문제를 일으키느냐?

테터툴즈의 세션시스템에 대한 이해가 필요합니다.
테터툴즈는 session_set_save_handler 라는 함수를 통해 세션관리를
DB가 수행합니다. default는 파일을 이용해서 세션을 관리하죠

auto_start=1 설정에 따라 이미 헤더부분에서 session_start가 되어
는데 다시 session_set_save_handler를 적용하고 session_start를
실행하면서 headers already sent by ... 오류를 발생하면
서 세션이 생성되지 않습니다.

저도 쪽지보내기 및 현재 접속자정보의 관리를 편리하게 하기위해서
파일대신 DB를 이용하여 세션을 관리합니다.
이런걸 어떻게 아느냐.. 한번 유사한 경험이 있어서 ^^ Google에서
신나게 검색을 한적이 있거든요.

php 설정에서 아래와 같이 셋팅하고 오류메세지를 보니까 알겠더라구요

error_reporting  =  E_ALL
display_errors    = ON

http://ghj.pe.kr/attach/1/1353257659.png

결론
웹호스팅 회사에 전화해서 php.ini설정을 아래와 같이 변경후
리스타트 해주세요 아니면 이글을 복사해서 담당자에게 메일로
보내줘도 되겠네요

php.ini
...
session.auto_start = 0
...

16

(23 답글들, 질문과 답변 / 사용자 지원에 작성)

한소프트 리눅스 및
AnNyung 1.2 R3
에서 테스트 해보았습니다.

테스트 시나리오

FTP를 모르는 홍길동이라는 사용자가
SSH및 mod_rewrite를 지원해주는 웹호스팅 회사에서
서비스를 신청하여  아래와 같은 계정정보를
가지고 테터툴즈를 설치할려고 합니다.

도메인 : setup.ghj.pe.kr
아이디 : setup
패스워드 : setup
(db 계정정보도 동일함)

홍길동의 $HOME 디렉토리에는 아래와 같은 폴더가 있습니다.

$HOME
   a1/
   a2/
   a3/
   a4/
   a5/
   backup/
   public_html/
   html/


이 디렉토리중 html 이라는 디렉토리가 웹시작 디렉토리
입니다.

테스트결과 html 디렉토리를 찾아내고 SFTP로 배포판
tattertools-1.0.4.tar.gz 파일을 전송하고 압축을
푼후 퍼미션까지 지정후 setup.php가
실행되었습니다.

다른분들도 유사한 시나리오로 테스트 부탁드릴께요.


[경고] 테터툴즈가 이미 설치되어 있는 계정에는
테스트 하지 마세요.

17

(23 답글들, 질문과 답변 / 사용자 지원에 작성)

깨끗한 계정으로 테스트 해보세요.
웹기반 인스톨러는 FTP를 모르고 계정정보만
아는 분들을 배려하기 위해서 만들어져있습니다.
그리고 웹 시작디렉토리 찾는 로직을 개선해야 되는데


원리는  ls -1F 하여 SSH로 접근한 사이트의
파일과 디렉토리 정보를 읽어옵니다.
존재하는 디렉토리에 web_home_chk.php파일을 복사
해서 curl함수를 사용해 URL을 추적해봅니다.
추적후 정상적으로 WEB_HOME이라는 메세지를 출력해주면
웹 시작디렉토리임을 알아내고 그쪽에 파일을
넣어주고 설치준비단계까지 완료합니다.

웹 시작디렉토리  찾는 로직은 개선을 해야 겠네요.

18

(23 답글들, 질문과 답변 / 사용자 지원에 작성)

어떻게하면 쉽게 그리고 빠르게 저희 부모님도 테터툴즈를 설치를
할수 있을까? 고민을 했습니다. 그래서 아래와 같은 스팩이 나오고
그 아이디어를 바탕으로 만들어 보았습니다.

WEB기반 INSTALL 버전에 대한 스팩입니다.

1. 웹기반에서 설치를 실행한다.
2. Acitive X는 사용하지 않는다.
3. 사용자가 파일을 다운로드 받고 압축을 풀고 웹으로 올리는
   과정을 없애고 설치서버가 이를 대신해준다.
4. 빠른 설치를 위해 tar.gz 파일을 SFTP를통해서
   전송하고 SSH로 압축해제 명령어을 넘겨서 압축파일을 풀어준다.
5. 작업이 완료되면 http://도메인/setup.php까지 자동으로 진행한다.

설치시 필요로 하는정보
   1. 도메인
   2. 아이디
   3. 패스워드

개선사항 및 아이디어
1. 다양한 사항에서의 오류대처..
2. SSL을통한 보안 접속지원
3. 반자동 업데이트에 활용(ex. 긴급 보안패치!)
   서버에 설치된 빌드번호를 보고 보안패치서버에 접속한후
   서로번호가 상이할경우 변경사항만 sftp를 통해서 받고
   파일을 갱신하는 형태

php에서 ssh2 지원을 위한 서버셋팅 힘들었지만 코딩은 간단하게
나오는군요. 사용자의 웹 시작 디렉토리를 알아낼려고 엄청난
삽질을 했습니다 ㅠ.ㅠ

악의적인 코드는 없습니다. 테스트 부탁드립니다.


테스트해보기(배포버전 1.04)
http://ghj.pe.kr/user/tatter/tattertool … nstall.php

소스코드보기(기능구현에 급급하느라 소스가 허접합니다.
돌던지지 마세요 ㅠ.ㅠ )

http://ghj.pe.kr/user/tatter/tattertool … stall.phps

http://ghj.pe.kr/user/tatter/web_home_chk.phps

참고 :
ssh2관련 서버 설정은 아래문서를 참고하세요
http://kr.php.net/ssh2

19

(1 답글들, 잡담하기에 작성)

열심히 활동해야 겠습니다.
webthink 가  1등하는 그날까지 ^^

http://ghj.pe.kr/attach/1/1351849447.gif

http://ghj.pe.kr/attach/1/1397707974.gif

http://ghj.pe.kr/attach/1/1324902516.gif

포럼에 글쓸때 아래 부분해결좀 해주시면 안될까요 ㅠ.ㅠ
100자는 적을수 있어야죠

제목은 70 글자 이상이 될 수 없습니다.

원래 제목은 "SVN로그를 보다가 통계가 있어서 한번 클릭해봤습니다." 입니다.

참고로 전 해상도를 1400*1050 으로 사용합니다.
제블로그 구글통계를 보니 1600사용하시는 분도 많더군요.
1280*1024도 30%를 넘어가고^^

1. lib/model/entry.php ==> getEntryListByCategory 함수 수정

기존

function getEntryListByCategory($owner, $category) {
    global $database;
    if ($category === null)
        return array();
    if ($category > 0) {
        $categories = fetchQueryColumn("SELECT id FROM {$database['prefix']}Categories WHERE owner = $owner AND parent = $category");
        array_push($categories, $category);
        $cond = 'AND category IN (' . implode(', ', $categories) . ')';
    } else
        $cond = 'AND category >= 0';
    $visibility = doesHaveOwnership() ? '' : 'AND visibility > 0';
    $sql = "SELECT * FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility $cond ORDER BY published DESC";
    return fetchQueryAll($sql);
}

변경 : content를 제외한 데이터만 배열로 만든다.

function getEntryListByCategory($owner, $category) {
    global $database;
    if ($category === null)
        return array();
    if ($category > 0) {
        $categories = fetchQueryColumn("SELECT id FROM {$database['prefix']}Categories WHERE owner = $owner AND parent = $category");
        array_push($categories, $category);
        $cond = 'AND category IN (' . implode(', ', $categories) . ')';
    } else
        $cond = 'AND category >= 0';
    $visibility = doesHaveOwnership() ? '' : 'AND visibility > 0';
    $sql = "SELECT owner,id,draft,visibility,category,title,slogan,
                  location,password,acceptComment,acceptTrackback,
                  published,created,modified,comments,trackbacks 
             FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility $cond ORDER BY published DESC";
    return fetchQueryAll($sql);
}

2. lib/piece/blog/list.php 수정

기존

<?
if (isset($list)) {
    $listView = $skin->list;
    $itemsView = '';
    foreach ($list['items'] as $item) {
        $itemView = $skin->listItem;
        dress('list_rep_regdate', Timestamp::format3($item['published']), $itemView);
        dress('list_rep_link', "$blogURL/" . ($blog['useSlogan'] ? "entry/{$item['slogan']}" : $item['id']), $itemView);
        dress('list_rep_title', htmlspecialchars($item['title']), $itemView);
        if ($item['comments'] > 0)
            dress('list_rep_rp_cnt', "({$item['comments']})", $itemView);
        $itemsView .= $itemView;
    }
    dress('list_rep', $itemsView, $listView);
    dress('list_conform', htmlspecialchars($list['title']), $listView);
    dress('list_count', count($list['items']), $listView);
    dress('list', $listView, $view);
}
?>

변경 : dress함수의 잦은 호출로 인한 오버헤드 증가해결 및 중복스킨호출 수정

<?
if (isset($list)) {
    $listView = $skin->list;
    $itemsView = '';
    foreach ($list['items'] as $item) {        
        $lo_src = array(
            "[##_list_rep_regdate_##]",
            "[##_list_rep_link_##]",
            "[##_list_rep_title_##]",
            "[##_list_rep_rp_cnt_##]"
        );                
        $lo_tar = array(
            Timestamp::format3($item['published']),
            "$blogURL/" . ($blog['useSlogan'] ? "entry/{$item['slogan']}" : $item['id']),
            htmlspecialchars($item['title']),
            ($item['comments'] > 0) ? "(".$item['comments'].")" : ""
        );        
        $itemView = str_replace($lo_src,$lo_tar,$skin->listItem);        
        unset($lo_src);
        unset($lo_tar);        
        $itemsView .= $itemView;
    }        
    dress('list_rep', $itemsView, $listView);
    dress('list_conform', htmlspecialchars($list['title']), $listView);
    dress('list_count', count($list['items']), $listView);
    dress('list', $listView, $view);
}
?>

수정해서 sandBox에 반영했습니다. 첫경험(??)이라  부족한 부분이 많습니다.
아래는 커밋로그 입니다.

포럼 http://www.tattertools.com/ko/forum/viewtopic.php?id=171

카테고리목록을 가져올때 내용까지 가져와서 배열로 저장함에따라
글수와 상관없이 글내용이 많을경우 overflow 발생및 timeout발생
getEntryListByCategory 함수를 수정하여 content는 가져오지않는다.
스킨변환부분 dress함수의 잦은 호출로 인하 오버헤드증가및 스킨중복
호출수정 한번만 불러와서 전체를 변경한다.

글많이 등록되어 있으신분들 테스트 해보세요. 전 뉴스긁어와서 9999개정도
등록하고 테스트 해봤습니다.
http://ghj.pe.kr/attach/1/1030069386.gif

테스트를 위해 만개는 좀 심한것 같고
9,999개의 INSERT후 카테고리를 선택했습니다.

아래코드에서 타임아웃이 발생합니다.
(스킨치환자를 dress함수를 이용하여 실제값으로 변경하는 부분이군요.
생각보다 단순(??)하게 되어 있군요.)

lib/piece/blog/list.php

foreach ($list['items'] as $item) {
   $itemView = $skin->listItem;
   dress('list_rep_regdate', Timestamp::format3($item['published']), $itemView);
   dress('list_rep_link', "$blogURL/" . ($blog['useSlogan'] ? "entry/{$item['slogan']}" : $item['id']), $itemView);
   dress('list_rep_title', htmlspecialchars($item['title']), $itemView);
   if ($item['comments'] > 0)
      dress('list_rep_rp_cnt', "({$item['comments']})", $itemView);
   $itemsView .= $itemView;
}

$itemsView변수에 값이 저장되기도 전에 오류가 발생하므로
entries.php end.php 는 실행되지 않습니다.

blog/category/index.php에
@set_time_limit(0);
을 두어 나오게는 만들수 있지만 근본적인 해결방법은
아닌것 같네요.

스킨처리로직의 속도향상이 필요할것 같습니다.
지금  해결을 해볼려고 하지만 쉽지가 않군요..



... Template_ 가 머리속을 스쳐지나 가는군요.

원인은 MYSQL버젼에 따른 INSERT 구문의 오류입니다.

INSERT INTO dev_Categories (owner, id, parent, name, priority, entries, entriesInLogin, label) VALUES (1, '', NULL, '123', 1, 0, 0, '123');

mysql TOOL로 문장을 실행시키니 아래와 같은 메세지자 나오는군요.

Out of range value adjusted for column 'id' at row 1

id값이 integer 형인데 '' char형태의 값이 들어가서 발생하는 오류 같군요.
이전에는 문제가 없었는데 왜그렇지?
자료를 찾았습니다.

로컬에서는 MYSQL 5.0.20에서 실행됩니다..
웹에서는 MUSQL 5.0.18이구요 버전상의 문제는 아닌것 같고

로컬의 my.ini설정에 아래와 같은 구문이 있더군요.

# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

아래와 같이 주석처리하고 MYSQL을 리스타트 하면 문제가 발생하지
않았습니다.

# sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

MYSQL.COM 들어가서 sql-mode 메뉴얼을 보니 데이터형을 비교해서 잘못들어온 데이터를
엄격히 관리함에 따라 integer로 정의되어 있는데 char값이 들어오니 오류가 발생
했겠죠. 설정할수 있는게 많네요.
보다 자세한 사항은 아래 URL을 참고하시구요.

http://dev.mysql.com/doc/refman/5.0/en/ … -mode.html


참고로

NO_AUTO_CREATE_USER

이구문이 들어 있어서 아래와 같은 사용자 생성 스크립트가 먹지를 않더라구요.

CREATE DATABASE multi;
GRANT ALL PRIVILEGES ON multi.* TO multi@localhost;
UPDATE user SET password = password('multi') WHERE user = 'multi';
flush privileges;

주석처리하고 나니 명령어가 실행이 되는군요.

ORACLE에서는 자료형을 따지니까 int형일때는 '를 입력하지 않고 null일때는
0으로 처리해서 자료를 넣었습니다. MYSQL에서는 소홀했는데 이제 점점더 까다로워
지네요^^

갑자기 PHP의 register_global 이 생각나네요 요즘은 off해놓고 코딩하는게 습관이
되었습니다.

버그라고 해야할지 셋팅상의 문제라고 해야할지^^

저도 테스트 해봤는데요 Local에서 윈도우 아파치  설치한건 카테고리가 생성되지 않았습니다.
Web에서 생성한건 문제가 발생하지 않았고요
테스트해본건 sandBox의 r29를 가지고 테스트 했습니다.
혹시나 해서 웹계정에 새롭게 받은 파일을 올려서 설치해보고 문제가 있는지 테스트 해보겠습니다.

http://multi.ghj.pe.kr에 모든 파일을 삭제하고 다시 r29를 가지고 다시 설치를 했습니다.
문제 없이 생성이 잘되군요..

addCategory함수에서 별다른 문제점은 발견이 되지 않는데 왜 로컬에서는 생성이 안되고
웹에서는 생성이 잘되지 다시 한번 봐야 겠네요^^

저두 확인했습니다.
앞으로 더 열심이 활동해야 겠네요 ^^
전 gmail인데 잘 보이네요^^

글하나 일때는 잘되는데요.
정확한 테스트를 위해
블로그 글을 한 페이지 당 10개정도도 해놓고
테스트를 해봐야 될듯하네요.

그리고 버그하나 더 발견했는데요(FF 실행)
http://ghj.pe.kr/attach/1/1328578805.gif

그림에서 보면 홈페이지가 http://ghj.pe.kr 이렇게 되어있는데요
디비에 저장된 값을 가지고 오지 않고 쿠키에 저장되어 있는 값을
가져오나 봐여 제가 IE에서 홈페이지를 지우고 저장했거든요.

IE에서는 어떻게 나오나. 그림을 볼까요?

http://ghj.pe.kr/attach/1/1339985401.gif

Undefined index: guestHomepage

쿠키에 값이 들어 있지 않으니까 오류가 발생하겠죠.
하지만 FF에서는 모든글의 홈페이지가 http://ghj.pe.kr 이렇게 나오네요.

결론은

글수정시 홈페이지값은 DB에 저장된 값을 가지고 와야 한다.
글등록시에는 쿠키를 활용한다.