Pydio

ajaxplorer 3.0 설정 및 한글 파일 다운로드 및 압축문제 해결

by 보석 posted Oct 16, 2011
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄


나중에 svn 도 통합될 듯 싶어 ajaxplorer 설치.

몇가지 문제점 발견, 내키면 삽질해서 수정예정..
- 한글폴더에 업로드 안됨
- zip내에 한글파일있으면 안열림.(access.fs/class~drive.php 내에 case "ls" - nodename가 꼬인듯 iconv로 utf로 변환후 로그확인하면 ls가 정상종료됨. 그러나 서버에 접속하면 500에러 내면서 뻗음.) - 일단 무기한연기.

환경 ubuntu 10.4 ,locale utf-8




모든 권한은 www-data(apache유저)로 설정함.
업로드 파일 제한 풀기 및 공유링크 활성화.(http~~형식으로 다운로드 용 링크 딸수있음)
/etc/php5/apache2/php.ini
post_max_size = 2000M
upload_max_filesize = 2000M

/server/conf/conf.php
$upload_max_size_per_file = 0;
$upload_max_number = 0;

공류링크 생성기능 활성.(public link)
 ajaxplorer/public 디렉토리 생성

디버그 모드 -log에 디버깅 정보 저장됨.
/server/conf/conf.php
$AJXP_JS_DEBUG = true;
$AJXP_SERVER_DEBUG = true;



한글문제 폴더 문제.
크롬의 경우 문제없음.
ie8 의 경우 업로드에서 flash 사용.

http로 ie에서 보내는 패킷을 열어보면, 디렉토리 이름을 base64_encode후 urlencode한 데이터가 올라감.ex) /한글 ->L+2VnOq4gA== ->L%2B2VnOq4gA==

디코딩에 urldecode빠짐. base64decode 전에 urldecode 추가


/plugins/uploader.flex/class.FlexUploadProcessor.php

public function preProcess($action, &$httpVars, &$fileVars){
~
AJXP_Logger::debug("Dir before base64", $httpVars);
$httpVars["dir"] = base64_decode(urldecode($httpVars["dir"]));
~
}


삼바(cifs/윈도우 공유)와 공유하기
/etc/samba/smb.conf

~~~
[ajaxplorer]
   comment = ajaxplore files
   writable = yes
   read only = no
   locking = no
   path = /var/www/ajaxplorer/files
   force user = www-data
   force group = www-data
   guest ok = yes

한글파일 업로드 다운로드 가능하게 만들기.
ubuntu 에 설치된 apache2기본설정을 보면 locale이 C로 되어있음.
-> phpinfo()등으로 확인하면 enviroment에 LANG 가 C로 나옴.

/etc/apache2/envvars

## The locale used by some modules like mod_dav
export LANG=ko_KR.UTF-8


또는
/etc/default/locale
LANG="ko_KR.UTF-8"

/etc/apache2/envvars
## Uncomment the following line to use the system default locale instead:
 . /etc/default/locale
export LANG

<- # 제거


한글이름 파일 업로드 및 다운로드 가능토록 수정 - 위 설정을 건드리지 않고 소스수정

1. /server/conf/conf.php

$default_language="kr"


2. server/classes/class.SystemTextEncoding.php

function getEncoding(){
        global $_SESSION;
        // Check if the session get an assigned charset encoding (it's the case for remote SSH for example)
        if (isset($_SESSION["AJXP_CHARSET"]) && strlen($_SESSION["AJXP_CHARSET"])) return $_SESSION["AJXP_CHARSET"];
        // Get the current locale (expecting the filesystem is in the same locale, as the standard says)
        setlocale(LC_CTYPE, 'ko_KR.UTF-8');
        return SystemTextEncoding::parseCharset(setlocale(LC_CTYPE, 0));
 }


한글파일 압축지원(깨짐방지)

/plugins/access.fs/class.fsAccessDriver.php 파일
function makeZip ($src, $dest, $basedir)
{
~
                $filePaths[] = array(PCLZIP_ATT_FILE_NAME => $realFile,
                                                         PCLZIP_ATT_FILE_NEW_SHORT_NAME =>  iconv('utf-8', 'euc-kr', basename($item)));
~
        return $vList;
}