본문으로 건너뛰기
목차
문제 해결

PHP 확장 기능 및 설정

기계 번역입니다. 영어 원문을 이용할 수 있습니다.

KapsuleHost 웹 호스팅이 WordPress, WooCommerce 및 PHP 사이트에 제공하는 PHP 버전과 확장 기능, 직접 변경할 수 있는 설정, 그리고 변경 사항이 반영되기까지 최대 5분이 걸릴 수 있는 이유에 대해 설명합니다.

정적, Node.js, Python 사이트는 PHP를 실행하지 않습니다. 사이트에서 PHP와 관련된 모든 것은 한 곳에 모여 있습니다. 웹사이트에서 사이트를 클릭하고 설정, 그다음 PHP로 이동하세요. 이 페이지에는 버전 선택기, 변경 가능한 설정, Composer 실행기, 그리고 PHP 오류 로그가 있습니다.

KPanel에서 사이트의 PHP 페이지, 버전 선택기와 변경 가능한 설정이 표시됨

PHP 버전 선택하기

선택 가능한 버전은 네 가지입니다: 8.4, 8.3, 8.2, 8.1. 신규 사이트는 기본적으로 8.3을 사용합니다.

사용 중인 소프트웨어가 실제로 지원하는 최신 버전을 선택하세요. 최신 PHP는 체감할 수 있을 정도로 빠르고, 보안 수정 지원 기간도 더 깁니다. 곧바로 최신 버전으로 넘어가지 말아야 할 이유는 호환성 때문입니다. 오래된 플러그인이나 수년 전에 작성된 커스텀 코드는 한 번도 테스트되지 않은 버전에서 완전히 작동하지 않을 수 있습니다.

변경하려면 버전을 선택하고 버전 적용을 클릭하세요. 변경 사항은 즉시 적용되며, 별도의 재시작이 필요 없고 다운타임도 없습니다.

PHP 버전은 먼저 스테이징에서 변경하고, 사이트를 클릭해 보며 확인한 다음에야 프로덕션에서 변경하세요. 반드시 실제 운영 환경에서 변경해야 한다면 직접 지켜볼 수 있을 때 진행하고, 되돌리는 작업은 클릭 한 번이면 된다는 점을 기억해 두세요. 스테이징 환경을 참고하세요.

버전 변경으로 사이트가 망가지면 이전 버전으로 되돌리고 로그를 확인하세요. 오류에는 실행되지 못한 파일 이름이 표시됩니다. PHP 버전 변경하기와 오류 로그를 참고하세요.

변경 가능한 설정

PHP 페이지에는 드롭다운 형태로 다섯 가지 설정이 노출되어 있습니다. 실제로 문제를 일으키는 설정들이기 때문에 이렇게 겉으로 드러나 있는 것입니다.

설정기본값선택 가능한 값설정 내용
memory_limit256M128M, 256M, 512M, 1024M, 2048M요청 하나가 사용할 수 있는 메모리 양
max_execution_time3030, 60, 120, 300, 600요청 하나가 실행될 수 있는 시간(초)
upload_max_filesize64M16M, 32M, 64M, 128M, 256M업로드 가능한 가장 큰 단일 파일 크기
post_max_size65M17M, 33M, 65M, 129M, 257M가장 큰 전체 폼 제출 크기
max_input_vars30001000, 3000, 5000, 10000한 번의 제출에 포함될 수 있는 필드 수

원하는 상황별로 설정은 다음과 같습니다:

  • 특정 크기 이상의 업로드가 실패하는 경우: upload_max_filesize를 올리고, 이와 함께 post_max_size도 올리세요.
  • 대형 폼이나 페이지 빌더가 저장 시 필드를 잃어버리는 경우: max_input_vars를 올리세요. 아무런 오류도 나지 않기 때문에 이 문제는 눈에 보이지 않으면서도 매우 성가십니다. 초과된 필드가 조용히 버려질 뿐입니다.
  • 페이지가 오류 없이 도중에 멈추는 경우: memory_limit를 올리세요. WordPress 메모리 제한을 참고하세요.
  • 긴 가져오기나 내보내기 작업이 시간 초과되는 경우: max_execution_time를 올리고, 대신 명령줄에서 작업을 실행하는 것도 고려해 보세요. WP-CLI를 참고하세요.

post_max_size는 upload_max_filesize보다 커야 합니다. 업로드 파일이 게시물 내부를 통해 전달되기 때문입니다. 두 값의 관계가 맞지 않는 조합을 선택하면 플랫폼이 알아서 post_max_size 값을 올려 보정합니다. 선택하지 않은 값이 표시되는 것은 이 때문입니다.

변경 사항 반영에 최대 5분이 걸리는 이유

이 페이지에서 가장 흔히 발생하는 혼동이므로 정확히 짚고 넘어갈 필요가 있습니다.

설정은 사이트의 문서 루트에 있는 .user.ini 파일에 기록됩니다. PHP는 이 파일을 읽은 뒤 300초, 즉 5분 동안 캐시합니다. 이 캐시가 만료될 때까지 PHP는 이전 값을 계속 사용합니다.

따라서 변경 사항을 저장한 후에는:

  • 페이지는 최대 5분 동안 이전 한도를 그대로 보여줍니다.
  • phpinfo()도 최대 5분 동안 이전 한도를 그대로 보여줍니다.
  • 강력 새로고침을 해도 소용이 없습니다. 브라우저 캐시를 지워도 마찬가지입니다.
  • 아무것도 재시작할 필요가 없으며, 애초에 재시작할 수도 없습니다. 그냥 기다리면 됩니다.

5분이 지났는데도 값이 바뀌지 않았다면 실제로 문제가 있는 것이므로 티켓을 등록해 볼 만합니다.

.user.ini 직접 편집하기

원한다면, 또는 패널이 노출하지 않는 지시어가 필요하다면 SFTP나 SSH를 통해 .user.ini를 직접 편집할 수 있습니다. 이 파일은 사이트의 문서 루트에 있습니다. SFTP 접속을 참고하세요.

형식은 한 줄에 지시어 하나입니다:

memory_limit = 512M
max_execution_time = 120

.user.ini이 할 수 있는 일에는 두 가지 중요한 제한이 있습니다:

디렉터리 또는 사용자 단위로 설정이 허용된 지시어에서만 작동합니다. 위의 다섯 가지는 모두 여기에 해당합니다. disable_functions이나 extension=로 확장 기능을 불러오는 것처럼 시스템 수준에서만 설정 가능한 지시어는 .user.ini 파일에서 무시됩니다. 오류가 나지 않고 그저 아무 작동도 하지 않을 뿐이며, 그래서 사람들이 이런 문제에 오후 시간을 통째로 날리게 되는 것입니다.

패널은 단순한 키만 다시 읽어옵니다. opcache.enable이나 date.timezone처럼 점(.)이 포함된 지시어는 PHP가 정상적으로 인식하지만 패널 양식에는 나타나지 않습니다. 직접 지시어를 설정한 뒤 나중에 패널에서 뭔가를 바꿨다면, 이후 파일을 확인해 보세요.

KapsuleHost 웹 호스팅은 Apache가 아니라 nginx를 사용합니다. .htaccess 파일은 아무도 읽지 않습니다. php_value memory_limit처럼 .htaccess 파일에 넣은 PHP 지시어는 여기서 전혀 아무 작동도 하지 않습니다. 대신 .user.ini나 패널을 사용하세요. WordPress와 .htaccess를 참고하세요.

사용 가능한 확장 기능

표준 빌드는 폭넓게 구성되어 있으며 WordPress, WooCommerce, 그리고 대부분의 PHP 애플리케이션이 요구하는 것들을 모두 포함합니다.

데이터베이스: mysqli, pdo_mysql, sqlite3, pdo_sqlite 이미지: gd, imagick, exif 캐싱: Zend OPcache, redis, memcached 텍스트 및 로케일: mbstring, iconv, intl, gettext, ctype XML 및 데이터: dom, simplexml, xml, xmlreader, xmlwriter, xsl, json 네트워크: curl, soap, sockets, ftp, openssl 수학 및 암호화: bcmath, sodium, hash, random 파일 및 시스템: fileinfo, zip, zlib, phar, posix, pcntl, shmop, calendar, tokenizer

알아 두면 좋은 버전 차이 하나로, imap 확장은 8.3 이하 버전에는 있지만 8.4에는 없습니다. 해당 버전에서 PHP 자체에서 제거되었기 때문입니다. 이 확장이 여전히 필요한 애플리케이션을 사용 중이라면 8.3에 머무르거나 해당 애플리케이션을 최신 메일 라이브러리로 이전하세요.

설치되어 있지 않은 것: PostgreSQL 드라이버, MongoDB, Xdebug, mcrypt, 그리고 ionCube나 SourceGuardian 같은 상용 코드 로더.

패널에서 직접 확장 기능을 활성화하거나 비활성화할 수는 없습니다. 애플리케이션에 목록에 없는 기능이 필요하다면 티켓을 열고 어떤 것을 실행 중인지 설명해 주세요. 추가 가능 여부는 해당 확장 기능에 따라 다릅니다. 지원 티켓 열기를 참고하세요.

실제로 로드된 내용 확인하기

추측하지 말고 직접 확인하세요:

  • WordPress에서: 도구, 그다음 사이트 상태, 그다음 정보, 그다음 서버로 이동합니다. PHP 버전과 관련 한도가 표시됩니다.
  • SSH에서: 버전 확인은 php -v, 로드된 확장 기능 확인은 php -m를 사용하세요. SSH 키 추가하기를 참고하세요.

웹 루트에 phpinfo() 파일을 남겨두지 마세요. 이 파일은 경로, 확장 기능, 설정을 이를 발견한 누구에게나 공개하며, 자동화된 스캐너들은 바로 이 파일명을 찾고 다닙니다. 무언가를 확인하기 위해 하나 만들었다면 즉시 삭제하세요.

관련 가이드

도움이 되었나요?

AI이신가요? 이 페이지를 Markdown으로 읽기

관련 문서

웹사이트가 로드되지 않을 때: 진단 체크리스트순서대로 아래 단계를 진행하세요. 각 단계는 원인을 특정하거나 배제합니다. 대부분의 문제는 5단계에서 해결됩니다.…사이트 다운: 보이는 증상으로 원인 찾기이 문서는 로드되지 않는 사이트를 위한 제품 전반의 분류 트리입니다. KapsuleHost는 여러 제품을 운영하며, 원인을 가장 빨리 찾는 방법은 어떤 제품의 문제인지 추측하…Kapsule과 함께 Cloudflare 또는 다른 프록시 사용하기Cloudflare 또는 다른 프록시를 KapsuleHost와 함께 사용하는 방법 제3자 프록시 또는 CDN을 KapsuleHost 사이트 앞에 배치하는 방법, 사이트를 손상시키는 두 가지 설정,…사이트 속도 저하 및 리소스 한도호스팅 플랜이 실제로 무엇을 제한하는지, 각 한도에 도달하면 어떻게 되는지, 그리고 느린 사이트가 리소스 문제인지 코드 문제인지 판단하는 방법을 설명합니다.…

아직 해결되지 않았나요?

고객님의 계정을 잘 아는 Kora에게 물어보시거나 저희 팀에 문의하세요.

문의하기지원팀에 이메일