----
대문에도 적었습니다만, [[UseModWiki소스수정/화일업로드]] 패치를 꼭 읽어 보시기 바랍니다. 이 문제를 미리 생각하지 못한 제 불찰이 큽니다만... 전 당연히 알아서들 업로드 디렉토리는 별도로 둘 거라고 생각하고 있었는데 (제가 그렇게 하고 있었기 때문에...) 오늘 돌아다니면서 확인해 보니까 DataDir 값 자체를 기본값에서 바꾸지 않고 쓰시는 분들이 많으시네요. 다행히 이 ext 버전에서는 사용자 암호도 암호화되어 저장되고 있고, rclog 나 기타 데이타 화일을 직접 브라우저로 볼 수 있다고 해서 크게 문제가 될 일은 없어 보이긴 합니다만... 그래도 웬만하면 데이타 디렉토리는 이름을 바꾸고, 데이타 디렉토리 안에 .htaccess 라는 화일을 만들어서 그 화일 안에
{{{
deny from all
}}}
이라고 적어두세요. 그러면 브라우저에서 볼 수 없게 됩니다. 당연히 upload 디렉토리도 볼 수 없겠죠? 그러니까 upload 디렉토리는 데이타 디렉토리 밖으로 빼내어야 합니다. (이미 화일들이 존재하면 그냥 복사해도 됩니다. 복사한 업로드 디렉토리에는 777 퍼미션을 주셔야 다음 번 업로드가 가능할 테고요..
수작업으로 수정하실 분들을 위해서... ext1.42 버전에서 1.42a 와 1.42b 를 적용하기 위한 수정부분은 다음과 같습니다.
Index: wiki.pl
diff -u -r1.122 -r1.125
--- wiki.pl 24 Mar 2003 16:01:18 -0000 1.122
+++ wiki.pl 25 Mar 2003 14:13:52 -0000 1.125
@@ -33,8 +33,8 @@
### added by gypark
### wiki.pl 버전 정보
use vars qw($WikiVersion $WikiRelease $HashKey);
-$WikiVersion = "0.92K3-ext1.42";
-$WikiRelease = "2003-03-24";
+$WikiVersion = "0.92K3-ext1.42b";
+$WikiRelease = "2003-03-25";
$HashKey = "salt"; # 2-character string
###
@@ -70,7 +70,7 @@
$UserGotoBar $UserGotoBar2 $UserGotoBar3 $UserGotoBar4
$ConfigFile $SOURCEHIGHLIGHT @SRCHIGHLANG $LinkFirstChar
$EditGuideInExtern $SizeTopFrame $SizeBottomFrame
- $LogoPage $CheckTime $LinkDir $IconDir $CountDir $UploadDir
+ $LogoPage $CheckTime $LinkDir $IconDir $CountDir $UploadDir $UploadUrl
);
###
###############
@@ -368,6 +368,7 @@
print $q->redirect(-url=>"http:$ENV{SCRIPT_NAME}?action=upload&error=3");
exit 1;
}
+ $UploadUrl = "http:$UploadDir" if ($UploadUrl eq "");
###
###############
$Now = time; # Reset in case script is persistent
@@ -2265,7 +2266,7 @@
}
$txt .= "<TD class='uploadedfiles'>";
$txt .= &ScriptLink("reverse=Upload:$_", $uploadsearch) . " ";
- $txt .= "<a href='$UploadDir/$_'>$_</a>";
+ $txt .= "<a href='$UploadUrl/$_'>$_</a>";
$txt .= "</TD>";
$size = $filesize{$_};
@@ -3158,13 +3159,17 @@
if (!$InterSiteInit) {
$InterSiteInit = 1;
- ($status, $data) = &ReadFile($InterFile);
- return "" if (!$status);
- %InterSite = split(/\s+/, $data); # Later consider defensive code
###############
-### added by gypark
+### replaced by gypark
### file upload
- $InterSite{'Upload'} = "http:$UploadDir\/";
+# ($status, $data) = &ReadFile($InterFile);
+# return "" if (!$status);
+# %InterSite = split(/\s+/, $data); # Later consider defensive code
+ ($status, $data) = &ReadFile($InterFile);
+ if ($status) {
+ %InterSite = split(/\s+/, $data);
+ }
+ $InterSite{'Upload'} = "$UploadUrl\/";
###
###############
}
@@ -7395,11 +7400,6 @@
&RequestLockDir('upload', 5, 2, 0) || return 5;
my $prefix = &GetLastPrefix($UploadDir, $filename);
- if ($prefix == 0) {
- $prefix = "";
- } else {
- $prefix = ($prefix+1)."_";
- }
my $target = $prefix.$filename;
my $target_full = "$UploadDir/$target";
@@ -7489,15 +7489,8 @@
sub OekakiExit {
my $filename = "oekaki.png";
- my $prefix = &GetLastPrefix($UploadDir, $filename);
my (@allfiles, @files, %filemtime);
- if ($prefix == 0) {
- $prefix = "";
- } else {
- $prefix = $prefix."_";
- }
-
opendir (DIR, "$UploadDir") || die Ts('cant opening %s', $UploadDir) . ": $!";
@allfiles = readdir(DIR);
shift @allfiles;
@@ -7521,7 +7514,7 @@
print T('Following is the Interlink of your file') . "<br>\n";
print "<div style='text-align:center; font-size:larger; font-weight:bold;'>\n";
print "Upload:$files[0]<br>\n";
- print "<img style='border: solid 1 gray;' src='$UploadDir/$files[0]'>\n";
+ print "<img style='border: solid 1 gray;' src='$UploadUrl/$files[0]'>\n";
print "</div>\n";
print "<hr size='1'>";
@@ -7543,7 +7536,7 @@
print "<UL>\n";
foreach (@files) {
print "<LI>";
- print "<a href='$UploadDir/$_' target='OekakiPreview'>Upload:$_</a>";
+ print "<a href='$UploadUrl/$_' target='OekakiPreview'>Upload:$_</a>";
print " (".&TimeToText($filemtime{$_}).")</LI>\n";
}
print "</UL>\n";
@@ -7580,11 +7573,6 @@
# 저장할 화일명 결정
$filename = "oekaki.png";
$prefix = &GetLastPrefix($UploadDir, $filename);
- if ($prefix == 0) {
- $prefix = "";
- } else {
- $prefix = ($prefix+1)."_";
- }
$target_full = $UploadDir."/".$prefix.$filename;
# 저장
@@ -7662,16 +7650,16 @@
|;
}
-### 화일명이 겹칠 경우 가장 최근 화일의 prefix 를 얻는 함수
+### 화일명이 겹칠 경우 앞에 붙일 prefix 를 얻는 함수
sub GetLastPrefix {
my ($dir, $file) = @_;
if (!(-f "$dir/$file")) {
- return 0;
+ return "";
}
if (!(-f "$dir/2_$file")) {
- return 1;
+ return "2_";
}
my $prefix = 2;
@@ -7683,7 +7671,7 @@
$prefix++;
}
- return ($prefix - 1);
+ return $prefix ."_";
}
이 것을 계기로 그동안 실력도 없는 놈이 참 주제넘은 짓을 하고 있었구나...라는 생각이 듭니다. 그동안 만들었던 패치들 중에 몇개나 더 이런 문제를 가지고 있을지 모르겠군요. :-$
----
화일업로드 패치를 적용한 후 화일을 올리려고 하면..
업로드를 위한 lock 을 얻지 못했습니다
라는 메시지가뜨면서 업로드를 할 수 없습니다. 물론 upload 디렉토리의 퍼미션을 777로 했구요. 흑흑
: 저번하고 비슷한 상황 같네요. 예전에 lock 이 걸린 상태에서 다른 에러가 났을 겁니다. 거기 들어 있는 kimsnobody.pl 화일을 755 퍼미션을 준 후에 실행해서 temp 디렉토리 아래에 있는 "lockupload" 라는 디렉토리를 삭제해 주세요. [[UseModWiki소스수정/화일관리용스크립트]]에 사용법이 있습니다.
::오오 성공했습니다. 감사감사.
----
[[주인장분류]]
게시판/2003-03 페이지로 돌아가기 | 다른 수정본 보기