워드프레스 미디어 파일 업로드 시 'HTTP 오류' 해결 방법 [업데이트]

2

워드프레스 HTTP 오류

워드프레스의 미디어 라이브러리에서 미디어 파일 업로드 시 "HTTP error"(HTTP 오류)와 같은 오류가 발생하는 경우가 있습니다. HTTP 오류가 발생하는 경우에 다음과 같은 조치를 취하여 문제 해결을 시도해볼 수 있습니다.

이 문서는 2015년 11일에 작성된 문서이지만 그 동안의 경험을 바탕으로 내용을 업데이트하여 새로 발행했습니다.

  1. 먼저 이미지 파일 이름을 확인하도록 합니다. 이미지 파일 이름에 특수문자가 포함되어서는 안 됩니다. 예를 들어, 이미지 파일에 어포스트로피(')가 있으면 오류가 발생할 수 있습니다. 예: mary‘s-wedding.png.
  2. 이미지 크기를 줄여봅니다. 큰 파일을 업로드해야 하는 경우 최대 업로드 파일 크기 설정을 확인하여 크기가 작은 경우 크기를 높이도록 합니다.
  3. 이미지의 확장자를 변환해봅니다. 예를 들어, PNG 파일일 경우 JPG 파일로, JPG 파일일 경우 PNG 파일로 변환하여 다시 업로드해봅니다. 저는 보통 이 방법으로 대부분의 문제가 해결되었습니다.
  4. 잘 되다가 갑자기 문제가 발생하는 경우, 최근에 설치했거나 업데이트한 플러그인이 문제일 수 있습니다. 최근에 플러그인을 설치하거나 업데이트한 경우 "비활성화"한 후에 테스트해봅니다. 그래도 안 되면 모든 플러그인을 비활성화한 후에 문제가 해결되는지 테스트해봅니다.
  5. PHP 메모리를 늘려봅니다.  wp-config.php 파일에 define('WP_MEMORY_LIMIT', '256M'); 코드를 추가합니다(참고). 256M로 잘 안 되면 512M로 높여봅니다.
  6. 웹호스팅 업체에 문의하여 PHP 버전을 확인하여 PHP 버전이 낮지 않은지 확인합니다. 현재 워드프레스 권장 PHP 버전은 7.3 이상이며, PHP 7.0 이상을 설치하는 것이 좋습니다. ("워드프레스 권장 PHP 버전이 7.3으로 바뀌었습니다" 참고)
  7. 이미지 최적화(image optimizer) 플러그인이 있으면 비활성화해보십시오.
  8. 다음과 같은 코드를 .htaccess 파일에 추가해봅니다.
    <IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
    </IfModule>

    또는

    # Exclude the file upload and WP CRON scripts from authentication
    <FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
    Satisfy Any
    Order allow,deny
    Allow from all
    Deny from none
    </FilesMatch>

    또는

    AddType x-mapp-php5 .php (.htaccess 파일의 거의 맨 위에)
  9. 브라우저를 변경하여 테스트해봅니다. 가령 IE나 사파리를 사용하는 경우 크롬이나 파이어폭스로 변경하여 문제가 발생하는지 살펴봅니다.
  10. 워드프레스 버전 5를 사용하는 경우 고전 편집기(Classic Editor)를 설치하여 구텐베르크를 비활성화하여 문제가 해결되는지 확인합니다.
  11. 서버의 mod_security가 오류를 발생할 수 있습니다. mod_security 설정을 비활성화하여 문제가 해결되는지 확인합니다. 이를 위해 wp-admin 폴더에 .htaccess 파일을 만들고 다음 코드를 추가합니다.
    <IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
    </IfModule>
  12. 웹서버에 Access Control 기반의 Authentication(htpasswd, Basic Authentiaction, password protected directory 등)을 사용하는 경우 워드프레스에서  WordPress Flash Uploader, Cron, XMLRPC에서 문제가 발생할 수 있습니다. 관련 파일을 제외시켜주어야 제대로 작동합니다. .htaccess 파일에 다음과 같은 형식으로 코드를 추가합니다.
    # Exclude the file upload and WP CRON scripts from authentication
    <FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
    Satisfy Any
    Order allow,deny
    Allow from all
    Deny from none
    </FilesMatch>
  13. "업로드된 파일이 wp-content/uploads/2019/02 로 옮겨질 수 없습니다"와 같은 오류가 발생하는 경우 보통 1) 웹서버 공간 부족, 2) 퍼미션 문제를 의심해볼 수 있습니다. "워드프레스에서 미디어(사진) 업로드가 안 되는 문제"를 참고해보세요.

이 문제가 일시적으로 나타나는 경우도 있습니다. 저는 처음에 간헐적으로 png 파일에 대하여 HTTP 오류가 발생하여 jpg 파일로 업로드하는 방법을 선택했습니다. 하지만 조금 시간이 지나니 문제가 재발하지 않았습니다.

경우에 따라 웹호스팅과도 관련성이 있어 보입니다. 사이트를 이전하기 전에는 문제가 없다가 사이트를 다른 웹호스팅으로 이전한 후에 이런 문제가 발생하기도 합니다. 이 경우 위의 조치를 취하여 문제 해결을 시도해볼 수 있습니다. 그래도 문제가 해결되지 않으면 웹호스팅 업체와 상의해보시기 바랍니다.

위에서 언급했듯이 PHP 버전이 너무 낮으면 최신 워드프레스, 테마, 플러그인과의 호환성 문제가 발생할 수 있습니다. PHP 5.x 버전은 보안 문제가 발생해도 더 이상 보안 업데이트가 제공되지 않으므로 성능상, 그리고 보안상 사용하지 않는 것이 바람직합니다("PHP 5가 2개월 후에 수명이 종료되어 보안 업데이트가 중단됩니다" 참고).

※ 이미지 파일 이름에 한글이 포함되어도 업로드가 되지만, 가능하면 한글이나 일본어 글자 같은 비라틴어 문자를 이미지 파일 이름에 사용하는 것은 바람직하지 않을 수 있습니다("이미지 파일에 한글 이름을 사용해서는 안 되는 EU" 참고). 또, 일부 웹호스팅에서 한글이 URL에 포함되면 404 오류가 발생하기도 합니다.

참고:

2 개 댓글

  1. 덕분에... 이틀동안 고민하던 문제를 해결했어요.
    jpg 이미지를 png로 바꿔서 저장한 후 문제 해결되었습니다.
    멀티로 업로드 안되고 한개씩의 이미지를 업로드해야하지만 그래도 얼마나 다행인지 모릅니다.
    ftp로 올려서 이미지 링크해도 되지만 그렇게 되면 이미지 슬라이더 등의 기능을 사용할 수 없어서 고민였거든요.
    정말 ~~~ 감사합니다.

댓글 남기기

Please enter your comment!
Please enter your name here