갑자기 웹사이트에 아래와 같은 오류가 발생하였다.

error #0 "class 'pdo' not found in modules/session/session.model.php

최근에 수정한 것이 전혀 없는데, 사이트가 백지화되서 너무 당황했다. 

아무래도 PHP 관련된 문제인 것 같아서 호스팅 회사내에 PHP Selector에 들어가보니 

PDO와 관련된 Extensions 이 적용된 것을 확인하였다. 

우선 PDO와 관련된 것들을 모두 Disable 해보고 다시 웹사이트에 접속을 해보았는데 문제가 핼결되지 않고 다른 오류 메세지가 나오기 기작하였다. 

하여, 다른 PDO는 그대로 두고 PDO_MYSQL만 Disable 하고 다시 Enable를 하였더니 웹사이트가 다시 접속이 가능해졌다. 

혹시 같은 문제를 겪는 분들이 있을까 해서 이렇게 글을 남긴다. 

 



Posted by esource :

Xpressengine (이하 XE) 임시저장 글이 최신글 위젯에 노출되는 경우 해결방법


임시저장 글이 최신글 위젯에 노출되어서 짜증나셨나요? 이해합니다. 저도 언젠가 부터 올바르게 작성되지 않은 글이 최신글 위젯에 올라와서 놀랐는데요 알고 보니 임시글이 최신글에 나타났 것입니다. 해결 방법은 의외로 간단합니다. 그럼 누군가에게 도움이 되길 바라며 방법을 알려드립니다.


해결방법:



1) 최신글 위젯의 경우 

widgets/newest_document/queries 에 위치한 getNewestDocuments.xml을 열어서

<condition operation="equal" column="modules.site_srl" var="site_srl" /> 

부분 바로 아래에 아래와 같은 코드를 추가합니다.

<condition operation="notequal" column="status" default="TEMP" pipe="and" />


2) 탭 최신글 위젯의 경우 /widgets/tab_newest_document/queries에 위치한 getNewestDocuments.xml을 열어서

<condition operation="equal" column="module_srl" var="module_srl" filter="number" />

부분 바로 아래에 아래와 같은 코드를 추가해줍니다

<condition operation="notequal" column="status" default="TEMP" pipe="and" />


같은 문제를 겪고 계시다면 제가 제시한 방법으로 해결해보시기 바랍니다!





Posted by esource :

최근에 XE 1.8.0이 나옴고 동시에 PHP 5.5를 권장한다 해서 웹호스팅 서버를 고생고생하며 이전 완료하였다. 개인적으로 최근에 웹호스팅 서버 이전을 실행하면서 필기한 사항들이다. 아래의 사항들을 따라 하면 XE 웹사이트 서버 이전이 쉬울 것이다!핫!


1. 기존의 웹사이트 MYSQL를 백업한다 

Note: 웹호스팅 접속해서 MYSQL에 보면 백업 업션이 있다 개인적으로 PhpMyAdmin을 이용해서 Export을 하면 이상하게 새 계정에 Import가 잘  안돼었다.


2. 기존의 웹사이트의 파일들을 모두 백업한다 

Note: 웹호스팅 파일메니저에 들어가서 폴더를 zip등으로 압축한다. 이때 파일이 크면 웹호스팅 서버 자체에 압축파일로 만든 후 FTP접속을 통하여 본인 컴퓨터에 다운받는 것이 좋다. 그런 이유는 파일이 엄청나게 크면 웹상에서 본인 컴퓨터로 다운로드시 타임아웃이 되어서 다운을 받지 못한다. 


3. /public_html/에다가 웹사이트 도메인 폴더를 만든다. 예컨데, 웹사이트 주소가 mywebsite.com이라면 /public_html/mywebsite.com 이런식으로 구분하기 쉽게 만든다.


4. 새로운 MYSQL 생선한다


5. FTP로 XE CORE 프로그램을 /public_html/mywebsite.com에 업로드한다


6. http://ip주소/계정주소아이디/mywebsite.com에 접속하여 XE를 처음 설치하는 마냥 설치한다


7. 위 1번에서 백업받은 .sql 파일을 새로 생선한 MYSQL에 IMPORT 한다.


8. 위 2번에서 백업받은 zip 파일들을 새 웹호스팅에 FTP로 접속해서 업로드한 후 새 웹호스팅의 파일매니저에 들어가서 unzip을 실행한다.

Note: 본인 컴퓨터에서 압축해제를 하고 FTP로 올리는 것도 가능할지 모르나 시간이 엄청 걸리므로 압축된 상태로 웹서버에 폴더별로 해당 파일들을 올리고 웹호스팅 파일매니저에서 압축해제를 실행하면 압축해제가 금방된다!


9. Cpanel의 경우 Add Domain이라는 옵션이 존재하는데 거기서 mywebsite.com을 등록하면 끝! 만약 Cpanel를 사용하지 않는다면 아마도 도메인 등록 사이트에 접속해서 설정을 바꾸어 도메인 접속시 새 웹호스팅 서버로 접속하게 해야할 것이다!




Posted by esource :

XE에서 게시판에서 회원 닉네임을 클릭하면 '메일보내기' 옵션이 나타나는데, 개인정보 보호를 위하여 '메일보내기' 옵션을 삭제하는 방안에 대하여 알아보도록 하겠다. 






방법:


1. FTP로 /xe/modules/member 에 접속하여 member.model.php를 다운받는다


2. member.model.php를 열어 줄 141에 아래와 같이 나타나 있는 부분을 

아래와 같이 주석처리해준다. 


3. 수정한 member.model.php를 저장하고 다시 FTP로 /xe/modules/member 업로드한다. 


4. 브라우저로 캐쉬를 삭제한 후 다시 게시판에 접속하여 게시글의 닉네임을 클릭하면 아래와 같이 '메일보내기'가 나타나지 않는 것을 확인할 수 있다.




부록: 


닉네임 클릭시 '작성 글 보기' 옵션의 경우 관리자만 볼 수 있게 하려면 아래와 같이 할 수 있다


xe/modules/board/board.controller.php 에서

 

$oMemberController->addMemberPopupMenu($url, 'cmd_view_own_document', '');


부분을 아래와 같이 바꿔준다. 

 

if($logged_info->is_admin == 'Y') $oMemberController->addMemberPopupMenu($url, 'cmd_view_own_document', '');





Posted by esource :

XE로 운영하는 웹사이트에 기본 폰트를 바꾸려고 하니 어디서 어떻게 폰트를 바꿔야되는지 몰라서 한참을 헤맸다.


엄청난 시간동안 찾아헤맨 결과 폰트와 폰트 크기를 바꿀 수 있었다. 나 처럼 헤매는 사람이 있을까 염려되어 이렇게 글을 쓰게 되었는데, 그 누구에게는 도움이 되었길 바란다.  


자, 그럼 어떻게 바꾸는지에 대하여 알아보자. 


A. 기본 글꼴 바꾸기:

o. /xe/common/css/xe.min.css 의 font-family 에 기본 폰트 이름을 바꾼다.

o. /xe/layouts/레이아웃이름/css/default.css


B. 게시판 글꼴 및 글꼴 크기 바꾸기:

o.  /admin/ 에서 고급 > 에디터 > 본문 글꼴 및 글꼴크기 px 을 바꿀 수 있다.


C. 게시글 목록 글꼴 크기 바꾸기 (스케치북 스킨을 이용하는 경우):

o. /xe/modules/board/skin/스킨이름/css/board.css 에서 .bd_tb_lst td.title 에 font-size를 12px 에서 13px로 바꿔준다.





Posted by esource :




Xpressengine 기반으로 운영하는 사이트에 언젠가 부터 외부 이미지 (구글 사진앨범 이미지) 를 넣으면 섬네일 (Thumbnail) 대신에 위와 같은 기본 이미지 'No Image'만 나타나는 현상이 발생하였다. 분명 게시글 자체에는 사진이 올바르게 나타나는데 왜 섬네일이 안생길까를 고민하기 시작하였다. 


며칠 동안 문제해결을 해보려고 인터넷 검색은 물론 혼자 긴 시간 동안 삽질에 삽질을 하였으나 문제를 해결하지 못하였다. 여기서 내가 알고 있던 사실 한가지는 구글 사진앨범의 이미지 링크의 경우 http://가 아닌 https://가 붙어 있었다는 것이였다. 구글 사진앨범에서 끌어오는 이미지가 아닌 다른 외부 사이트의 이미지 링크의 경우는 https://가 아닌 http://로 되어 있었고 이에 정확한 이유를 알아보기 위하여 http://로 된 외부 이미지를 게시판에 올려보았는데 문제 없이 XE에 섬네일이 만들어졌다. 이로하여 https://가 분명 문제로 판단이 되었고 더블어 XE CORE 자체에서 https://로 된 이미지의 섬네일을 만들지 못하는 것으로 생각을 좁혔다. 


포기하기 1초전에 하나 문득 든 생각! 단순하게 구글 사진앨범 이미지 링크의 https:// 부분을 http://로 바꾸어 게시판에 올려보기로 하였다. 의외로 결과는 성공적이였다. 섬네일이 한순간에 나타나기 시작하였다. 이렇게 간단한 방법을 모르고 있었다니 어이가 없다!






Posted by esource :

한 서버에 두개의 XE를 설치하면 두개중 하나가 백지화되는 현상이 발생하는 경우가 있다. 이와 같은 문제가 발생하는 경우, 두개중 하나의 데이터베이스 데이블 이름의 Prefix를 xe_에서 xe2_로 변경하면 문제를 해결할 수 있다.


그럼 DB의 Prefix 수정 방법에 대하여 알아보자.


1. phpMyAdmin에 접속 후 왼편에 본인의 database를 클릭

2. SQL 탭을 클릭

3. RENAME 하는 SQL 구문을 입력 (Notepad++ 등을 이용. 전체 데이블 복사 및 수정 후 입력.)

4. Go 버튼을 클릭


위와 같이 수정한 후에는 FTP로 본인의 호스팅 계정에 접속하여


1. /xe2/files/config로 이동

2. db.config.php를 다운 받는다

3. Notepad++와 같은 프로그램을 이용하여 db.config.php를 연다

4. 'db_table_prefix' => 'xe_', 를 'db_table_prefix' => 'xe2_', 로 바꾸어 준다

5. db.config.php 파일을 저장 후 다시 서버에 업로드해준다


참고사항: 위와 같이 DB 테이블 Prefix를 변경하였으나 백지화 현상 문제가 해결되지 않았다면, XE의 모든 애드온을 다 끈다음에 다시 시도해보기를 바란다. XE CORE과 충돌하는 애드온으로 인하여 백지화 현상이 나타나는 경우가 아주 빈번하다.




Posted by esource :



현재 구글 아날리틱스 사용중이라 별도의 접속 통계가 필요없는 상황인데 XE 최신 버전 1.7.3.0

으로 업그레이드 한 후 XE 관리자 페이지 대시보드를 보니 접속 통계가 나왔다.


오래전 XE에서 대시보드에 접속 통계를 넣었다가 다시 뺀 것을 최신 버전에 이렇게 다시 노출시킨 이유가 무엇인지는 모르나 불필요한 대시보드 접속 통계로 인하여 서버 리소스 사용량만 늘어나지는 않을까 걱정되어 XE의 대시보드 접속 통계를 삭제하였다.


나와 같이 구글 아날리틱스나 다른 통계 프로그램을 적용하여 사용중이라면 아래의 방법으로 XE에 딸려오는 접속 통계를 없애어 서버 리소스 사용량을 줄여보자.


방법: 


1. /xe/modules/에 있는 counter 폴더 삭제함

2. /xe/addons/에 있는 counter 폴더 삭제함

3. /xe/modules/admin에 있는 Index.php의 코드에 아래의 부분들을 삭제함


A. 아래와 같은 코드가 있는 Line 49 부터 68 까지 삭제


<section class="status">

<h2>{$lang->uv}</h2>

<div style="margin:10px 15px;height:142px" id="visitors"></div>

<div class="more">

<dl>

<dt>{$lang->menu_gnb['user']}: </dt><dd><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList')}">{number_format($status->member->totalCount)} (<!--@if($status->member->todayCount > 0)-->+<!--@end-->{number_format($status->member->todayCount)})</a></dd>

</dl>

<a href="{getUrl('', 'module', 'admin', 'act', 'dispCounterAdminIndex')}"><i>&rsaquo;</i> {$lang->details}</a>

</div>

</section>

<section class="status">

<h2>{$lang->pv}</h2>

<div style="margin:10px 15px;height:142px" id="page_views"></div>

<div class="more">

<dl>

<dt>{$lang->menu_gnb_sub['document']}: </dt><dd><a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}">{number_format($status->document->totalCount)} (<!--@if($status->document->todayCount > 0)-->+<!--@end-->{number_format($status->document->todayCount)})</a></dd>

</dl>

<a href="{getUrl('', 'module', 'admin', 'act', 'dispCounterAdminIndex')}"><i>&rsaquo;</i> {$lang->details}</a>

</div>

</section>





B. 아래와 같은 코드가 있는 Line 156 부터 208 까지 삭제 

   (상기 A에 코드를 삭제한 후에는 Line 번호가 136 부터 188 까지로 됨)


jQuery(function ($)

{

$.exec_json("counter.getWeeklyUniqueVisitor", {}, function(htRes)

{

var aLastWeek = obj2Array(htRes.last_week.list);

var aThisWeek = obj2Array(htRes.this_week.list);


drawChart("visitors", "Weekly Visitors", aLastWeek, aThisWeek);

});


$.exec_json("counter.getWeeklyPageView", {}, function(htRes)

{

var aLastWeek = obj2Array(htRes.last_week.list);

var aThisWeek = obj2Array(htRes.this_week.list);


drawChart("page_views", "Weekly Page Views", aLastWeek, aThisWeek);

});

});


function drawChart(sContainerId, sTitle, aLastWeek, aThisWeek)

{

$ = jQuery;


var s1 = aLastWeek;

var s2 = aThisWeek;

// Can specify a custom tick Array.

// Ticks should match up one for each y value (category) in the series.

var ticks = [xe.lang.sun,xe.lang.mon,xe.lang.tue,xe.lang.wed,xe.lang.thu,xe.lang.fri,xe.lang.sat];


var plot1 = $.jqplot(sContainerId, [s1, s2], {

seriesDefaults:{

renderer:$.jqplot.BarRenderer,

rendererOptions: {fillToZero: true}

},

series:[

{label: xe.lang.last_week},

{label: xe.lang.this_week}

],

legend:

{

show: true,

placement: 'outsideGrid'

},

axes: {

xaxis: {

renderer: $.jqplot.CategoryAxisRenderer, ticks: ticks

},

yaxis: {

min: 0, ticks: 1, pad: 1.05

}

}

});

};



Posted by esource :

XE 추천/비추천 노출 애드온을 적용하면 아래와 같은 이미지가 첨부되어 있으며 해당 이미지가 웹사이트에 나오게 된다. 




그러나 솔리드한 보더 보다 점선이 더 괜찮을 것 같아서 바꾸어 보았다. 필요하신 분들은 아래의 이미지를 다운받아 /addons/addvote/tpl 에 넣으시면 된다.




다운로드 URL: https://t1.daumcdn.net/cfile/tistory/1859BE46511D34A215




Posted by esource :

XE 1.5.3.3.을 업그레이드한 후에 로그인시 비밀번호를 실수로 잘못 입력하기만 하면 아래와 같은 이메일과 쪽지가 자동으로 보내와서 왕짜증 나기 시작함.


확인하지 않은 로그인 실패 기록이 있습니다.

  • 2012-10-05 17:35:25 -07:00
    Access IP: X.X.X.X
    Message: 잘못된 비밀번호입니다.

* 이 알림은 한번만 보입니다.
* 이 메시지는 쪽지와 이메일로 발송됩니다.
* 이 메시지는 로그인이 성공한 순간, 로그인 성공 이전 실패 기록을 모아서 발송합니다.
발송 시각: 2012-10-05 17:35:51 -07:00



물론 이렇게 자동화된 로그인 실패 기록을 이메일과 쪽지로 보내져 오면 보안상 어떤 놈이 내 계정을 해킹하려고 하는지 쉽게 알 수 있어 유용하기는 하다만 요즘 시대에는 개인 이메일 계정은 물론이고 수 없는 웹사이트에 각히 다른 아이디와 비밀번호를 이용하기 때문에  비밀번호를 실수로 잘못 입력하는 경우는 아주 드물다. 이런 이유로 이용자 입장에서 본다면 웹사이트 접속시 비밀번호를 실수로 잘못 입력하였다하여 이런 이메일과 쪽지가 계속해서 온다면 웹사이트에 불안감을 가질 수 밖에 없다는 게 나의 생각. 


자 그럼, '로그인 실패 기록'이 이메일과 쪽지로 보내지지 않게 하기 위한 방법을 알아보자:


1. 쪽지로 보내지지 않게 하기

xe - modules - member - member.controller.php 열고 line 1515 쯤에 아래의 코드를 삭제 또는 주석 처리하면 해결.


$oCommunicationController->sendMessage($args->member_srl, $args->member_srl, $title, $content, true);


2. 이메일로 보내지지 않게 하기

xe - modules - member - member.controller.php 열고 line 1525 쯤에 아래의 코드를 삭제 또는 주석 처리하면 해결.


$oMail->send();



[업데이트] XE 1.7.5.3 기준으로는 line 1773과 1784 쯤에 코드가 있습니다. 삭제 또는 주석 처리하면 해결됩니다.



[업데이트] XE 1.7.11 기준으로는 line 1791과  1802 쯤에 코드가 있습니다. 삭제 또는 주석 처리하면 해결됩니다.





Posted by esource :