개요[편집 / 원본 편집]
미디어위키 중 파일 업로드와 관련된 내용입니다. 미디어위키로 위키를 운영하던 도중 문제가 발생했을 경우, 도움이 되길 바라며 글을 작성하였습니다.
파일 업로드[편집 / 원본 편집]
기본값[편집 / 원본 편집]
미디어위키를 설치하고 난 직후, 즉 기본값으로 설정된 값은 다음과 같습니다.
- 업로드 용량 제한량 : 100MB
- 업로드 가능한 확장자 : 'png', 'gif', 'jpg', 'jpeg', 'webp'[1]
업로드 전 설정[편집 / 원본 편집]
파일 업로드 전에 아래의 것들이 설정이 되어져 있는지 확인해 봅시다. 만약 아래의 것들이 설정 되어 있지 않다면, 설정해 주시기 바랍니다.
PHP 설정[편집 / 원본 편집]
php.ini 파일에 다음과 같이 설정되어 있는지 확인해 봅시다.
file_uploads = On
우분투 20.04 + apache2 기준 php.ini는 다음의 위치에 있습니다.[2][3]
거의 대부분의 호스팅, apt나 yum으로 설치한 경우, 기본값으로 설정되어 있습니다. 만약 아래의 설정들을 다 했는데도 불구하고 업로드가 되지 않는다면 확인하시기 바랍니다. php.ini를 변경한 경우, 반드시 환경에 따라 apache2나 PHP-FPM을 재시작하여 설정이 반영되도록 합니다.
apache2 폴더[편집 / 원본 편집]
root@gaon:/etc/php/7.4/apache2# ls
conf.d php.ini
cli 폴더[편집 / 원본 편집]
root@gaon:/etc/php/7.4/cli# ls
conf.d php.ini
소유권 및 퍼미션 설정[편집 / 원본 편집]
소유권 및 그룹 변경[편집 / 원본 편집]
업로드 되는 폴더(images)의 소유권과 그룹을 변경해 줍니다.
root@gaon:/var/www/html/w# chown -R www-data:www-data images
퍼미션[편집 / 원본 편집]
폴더의 퍼미션을 755로 변경해 줍니다.[4]
root@gaon:/var/www/html/w# chmod -R 755 images
LocalSettings.php 설정값 변경[편집 / 원본 편집]
LocalSettings.php 설정 값을 변경해 줍니다.
대부분 웹 인스톨러로 설치를 하게 되는데, 기본값으로 업로드에 체크가 되어 있기 때문에 해당 부분이 있는지 확인하시기 바랍니다.
$wgEnableUploads = true;
$wgHashedUploadDirectory[편집 / 원본 편집]
파일 업로드 시 업로드 될 폴더의 위치를 분할하여 업로드 할 것인지에 대한 설정입니다.
자세한 내용은 미디어위키/$wgHashedUploadDirectory 문서를 참고하세요!
업로드 확장자[편집 / 원본 편집]
확장자 추가[편집 / 원본 편집]
기본값으로 설정된 업로드 확장자 기본값 외의 확장자를 가진 파일을 업로드 하기 위해서는 LocalSettings.php 설정 값을 변경해야 합니다.
1개씩 입력[편집 / 원본 편집]
확장자명을 1개씩 입력하는 방법입니다.
$wgFileExtensions[] = 'docx';
$wgFileExtensions[] = 'xls';
$wgFileExtensions[] = 'pdf';
$wgFileExtensions[] = 'pptx';
위와 같이 $wgFileExtensions[] = '확장자명';
으로 하나씩 입력 할 수 있습니다.
여러개 입력[편집 / 원본 편집]
$wgFileExtensions로 여러개를 입력할 경우 줄이 길어지는 단점이 있기 때문에, 여러개의 확장자를 추가하기 위해서는 아래의 방식으로 추가하기를 권장합니다.
array[편집 / 원본 편집]
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'doc',
'xls', 'mpp', 'pdf', 'ppt', 'tiff', 'bmp', 'docx', 'xlsx'
);
array_merge[편집 / 원본 편집]
$wgFileExtensions = array_merge( $wgFileExtensions,
array( 'doc', 'xls', 'mpp', 'pdf', 'ppt', 'xlsx', 'jpg'
)
);
확장자 블랙리스트[편집 / 원본 편집]
특정 확장자들은 보안에 문제가 될 수 있기 때문에 블랙리스트로 설정되어 업로드 할 수 없습니다. 기본값은 다음과 같습니다.
$wgFileBlacklist = [
# HTML may contain cookie-stealing JavaScript and web bugs
'html', 'htm', 'js', 'jsb', 'mhtml', 'mht', 'xhtml', 'xht',
# PHP scripts may execute arbitrary code on the server
'php', 'phtml', 'php3', 'php4', 'php5', 'phps',
# Other types that may be interpreted by some servers
'shtml', 'jhtml', 'pl', 'py', 'cgi',
# May contain harmful executables for Windows victims
'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl',
];
블랙리스트 확장자 업로드 설정[편집 / 원본 편집]
만약 블랙리스트에 있는 확장자를 가진 파일을 업로드 할 수 있게 설정하기 위해서는 다음과 같이 입력하면 됩니다. 권장하지는 않습니다.
$wgFileExtensions[] = 'dll';
$wgFileBlacklist = array_diff( $wgFileBlacklist, array ('dll') );
업로드 용량 설정[편집 / 원본 편집]
기본적으로 php.ini에 명시된 업로드 값을 초과하여 업로드 할 수 없습니다.[5]
아래의 내용은 php.ini의 값보다 낮은 용량을 입력하는 것을 전제로 설명합니다.
$wgUploadSizeWarning = 2147483647;
$wgMaxUploadSize = 2147483647;
$wgUploadSizeWarning
는 설정된 값보다 큰 파일을 업로드 할 때, 경고를 표시하는 것입니다. 만약 설정값이 0이라면, 경고하지 않습니다.
$wgMaxUploadSize
로 파일 업로드 용량을 제한 할 수 있습니다. 이 값은 2147483647바이트, 즉 2GB이 최댓값입니다. 이 이상의 파일을 업로드 할 수 없습니다.
URL로 업로드[편집 / 원본 편집]
사용자의 PC에서 파일을 업로드 하는 것이 아닌, URL을 통해 파일을 업로드 할 수 있게 만들 수 있습니다. 이때 서버에서 해당 URL이 있는 서버로 접속 할 수 있어야 합니다.
먼저
$wgAllowCopyUploads = true;
로 설정해야 합니다. 이후 권한 설정을 해야 설정이 완료됩니다.
$wgGroupPermissions['user']['upload_by_url'] = true;
위와 같이 입력하면, 로그인한 유저는 모두 URL로 파일을 업로드 할 수 있게 됩니다.
각주[편집 / 원본 편집]
- ↑ 미디어위키 버전에 따라 기본값이 바뀌어 왔습니다. 1.3부터 1.26까지는 'png', 'gif', 'jpg', 'jpeg'만, 1.2는 'png', 'jpg', 'jpeg', 'ogg'만 올릴 수 있게 기본값으로 설정되어져 있습니다.
- ↑ 두군데에 있으며, apache2 폴더에 있는 것은 웹상(일반적인 업로드)에서 사용하는 설정값이며, cli 폴더에 있는 것은 쉘상에서 사용하는 설정값입니다. 둘 다 설정하는 것을 권장합니다.
- ↑ 경로 중 7.4는 php의 버전을 의미하는 것이므로, 자신이 사용하는 버전을 해당 경로에 입력하시기 바랍니다.
- ↑ 777로 변경해도 상관은 없지만, 보안상 권장하지 않습니다.
- ↑ 라이믹스의 분할 업로드와 같이 파일을 분할하여 업로드 하는 경우 제외