요즘 나오는 일부 테마는 높은 PHP 설정을 요구하는 경우가 종종 있습니다. 이 때문에 일부 서버에서는 워드프레스 데모를 설치하는 데 애를 먹기도 합니다.
예를 들어 인기 워드프레스 테마 중 하나인 The 7에서 Main Demo의 경우 다음과 그림과 같이 데모가 매우 크므로 많은 서버에서 임포트하는 데 어려움을 겪을 수 있다고 안내하고 있습니다.
워드프레스 데모 설치 시 에러가 나는 많은 경우는 php 설정값이 테마에서 요구하는 사양에 부합하지 않기 때문입니다.
해외 웹호스팅 서비스 중 하나인 Siteground에서 The 7의 메인 데모를 로드하려고 시도하니 다음과 같은 오류가 표시되면서 데모 설치에 실패했습니다.
The 7의 다른 데모는 별 문제 없이 로드에 성공했지만 이 Main Demo에서만 위와 같은 오류가 발생하네요. (The 7에서는 현재 26가지 데모가 제공됩니다.)
이 문제를 사이트그라운드 지원팀에 문의하여 다음과 같은 답변을 받았습니다.
memory limit is at 768M so that should not be an issue :) As for the max_execution_time it cannot be higher than 120 for shared hosting plans, however we can set Dynamic Timeouts so you import Demo Content for any theme :)
사이트그라운드의 경우 다른 웹호스팅 서비스와 달리 메모리 제한이 768MB로 매우 높은 편입니다. 제 사이트는 살펴보니까 128MB로 설정되어 있네요. (Siteground에서 자동으로 워드프레스를 설치하면 128MB로 설정되는 것 같습니다.)
또 다른 Siteground 담당자는 이 값을 512MB로 변경해보라고 하네요. 이 값은 512MB나 768MB로 높게 설정해도 사이트 성능에 영향을 미치지 않는다고 합니다. (하지만 Opcache 설정값은 높게 설정하면 리소스를 많이 할당하기 때문에 사이트 성능에 영향을 미칠 수 있다고 하네요.)
메모리 설정은 wp-config.php 파일에 define( 'WP_MEMORY_LIMIT', '512M' ); 라인을 추가하시면 됩니다. That's all, stop editing! 바로 위에 추가하도록 합니다. 저는 살펴보니까 아래와 같이 설정되어 있네요.
define( 'WP_MEMORY_LIMIT', '128M' ); define('WP_POST_REVISIONS', 3); define('DISALLOW_FILE_EDIT', true); /* That's all, stop editing! Happy blogging. */
define('DISALLOW_FILE_EDIT', true); 라인은 해커가 워드프레스 알림판으로 불법으로 침입하더라도 파일을 수정할 수 없도록 잠그는 기능을 합니다("워드프레스 보안 강화하기" 참고).
사이트그라운드 담당자의 말로는 메모리 제한이 768M이기 때문에 문제가 발생하지 않을 것이라고 합니다. 공유호스팅의 경우 max_execution_time은 120으로 고정되어 있지만 Dynamic Timeouts(동적 타임아웃?)을 설정하면 데모 콘텐츠를 가져오는 파일에 대하여 동적으로 타임아웃을 300으로 설정한다고 하네요.
Dynamic Timeouts을 설정하려면 다음 코드를 .htaccess 파일에 추가하도록 합니다.
<IfModule mod_dtimeout.c> <Files ~ ".php"> SetEnvIf Request_URI "index.php" DynamicTimeout=300 SetEnvIf Request_URI "themes.php" DynamicTimeout=300 SetEnvIf Request_URI "wp-admin" DynamicTimeout=300 </Files> </IfModule>
위 코드를 추가한 후에 The 7 메인 데모를 가져오려고 시도하니 중간에 동일한 오류가 발생했지만, 한 번 더 시도하니 제대로 가져올 수 있었습니다. (위의 코드 때문인지 아니면 데모 파일이 너무 커서 한 번에 다 가져올 수 없고 여러 번 시도하면 가져오게 되는지는 모르겠습니다.)
사이트그라운드에서 max_execution_time 때문에 문제가 발생하는 경우 메모리 제한 크기를 512M나 768M로 높여보고, 위에 제시된 Dynamic Timeouts 지시문을 .htaccess 파일에 추가해보시기 바랍니다.
만약 테마의 데모 파일이 너무 커서 문제가 계속 발생한다면 여러 번 시도해보시고, 그래도 문제가 되면 라이브 채팅으로 사이트그라운드에 연락하면 문제 해결에 도움을 받을 수도 있습니다.
참고로 워드프레스 플러그인을 업데이트할 때 504 Gateway Timeout (504 게이트웨이 타임아웃) 오류 메시지가 표시되지만 실제로는 업데이트가 제대로 되는 경우가 있을 수 있습니다. 이 문제도 아마 max_execution_time 설정과 관련될 수도 있을 것 같습니다. (504 게이트웨이 타임아웃 오류의 경우 어떤 글에서는 방화벽 때문일 수도 있다고 하네요.)
504 게이트웨이 타임아웃 오류의 경우에도 위에서 제시한 방법(메모리 제한 크기 상향 조정, Dynamic Timeouts 지시문 추가)을 시도해보고, 그래도 잘 안 되면 다음 코드를 php.ini 파일을 만들어 추가해보시기 바랍니다.
opcache.interned_strings_buffer = 16 opcache.memory_consumption = 256
위의 코드를 추가한 후에 사이트가 제대로 작동하는지 체크해보는 것이 중요합니다. 테마와 PHP 버전에 따라 사이트에 오류가 발생할 수도 있습니다.
본문에 나와 있는 Dynamic Timeouts 관련 코드를 .htaccess 파일에 추가하고 메모리 크기를 512MB로 늘리니까 504 Gateway Timeout 오류 메시지가 더 이상 표시되지 않는 것을 확인했습니다. 다른 환경에서는 발생할 수도 있지만 빈도가 많이 줄어들 것 같습니다.
위에 나와 있는 Dynamic Timeouts 관련 코드를 .htaccess 파일에 추가하니까 504 Gateway Timeout Gateway Timeout 오류 메시지가 더 이상 표시되지 않네요.