미디어위키/파일 업로드

가온 위키 파일 업로드 페이지.png

개요[편집 / 원본 편집]

미디어위키 중 파일 업로드와 관련된 내용입니다. 미디어위키로 위키를 운영하던 도중 문제가 발생했을 경우, 도움이 되길 바라며 글을 작성하였습니다.

파일 업로드[편집 / 원본 편집]

기본값[편집 / 원본 편집]

미디어위키를 설치하고 난 직후, 즉 기본값으로 설정된 값은 다음과 같습니다.

  • 업로드 용량 제한량 : 100MB
  • 업로드 가능한 확장자 : 'png', 'gif', 'jpg', 'jpeg', 'webp'[1]

업로드 전 설정[편집 / 원본 편집]

파일 업로드 전에 아래의 것들이 설정이 되어져 있는지 확인해 봅시다. 만약 아래의 것들이 설정 되어 있지 않다면, 설정해 주시기 바랍니다.

PHP 설정[편집 / 원본 편집]

php.ini 파일에 다음과 같이 설정되어 있는지 확인해 봅시다.

file_uploads = On

우분투 20.04 + apache2 기준 php.ini는 다음의 위치에 있습니다.[2][3]

거의 대부분의 호스팅, aptyum으로 설치한 경우, 기본값으로 설정되어 있습니다. 만약 아래의 설정들을 다 했는데도 불구하고 업로드가 되지 않는다면 확인하시기 바랍니다. 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. 미디어위키 버전에 따라 기본값이 바뀌어 왔습니다. 1.3부터 1.26까지는 'png', 'gif', 'jpg', 'jpeg'만, 1.2는 'png', 'jpg', 'jpeg', 'ogg'만 올릴 수 있게 기본값으로 설정되어져 있습니다.
  2. 두군데에 있으며, apache2 폴더에 있는 것은 웹상(일반적인 업로드)에서 사용하는 설정값이며, cli 폴더에 있는 것은 쉘상에서 사용하는 설정값입니다. 둘 다 설정하는 것을 권장합니다.
  3. 경로 중 7.4는 php의 버전을 의미하는 것이므로, 자신이 사용하는 버전을 해당 경로에 입력하시기 바랍니다.
  4. 777로 변경해도 상관은 없지만, 보안상 권장하지 않습니다.
  5. 라이믹스의 분할 업로드와 같이 파일을 분할하여 업로드 하는 경우 제외
• 현재 페이지 URL 줄이기