워드프레스를 최신 버전으로 업데이트하거나 관련 플러그인을 업데이트할 때 PHP 버전 업그레이드가 필요할 수 있습니다. 방화벽 도구가 워드프레스 업그레이드를 권장해서 그대로 했더니 아래와 같은 경고 메시지가 뜨면서 웹사이트가 다운되었습니다. 저는 cPanel의 MultiPHP Manager로 PHP를 5.6에서 7.4로 올리는 중이었습니다.
Warning: Use of undefined constant WP_CONTENT_DIR – assumed ‘WP_CONTENT_DIR’ (this will throw an Error in a future version of PHP) in /home/XXXXX/public_html/wp-includes/load.php on line 115
바로 본론으로 들어가겠습니다. 오류의 원인은 .htaccess에 자동 생성된 PHP 핸들러(버전 7.4)가 서버에서 동시에 동작하던 다른 PHP 핸들러(버전 5.6)와 충돌한 것이었습니다.
예전 PHP 핸들러는 이렇게 생겼습니다:
# Use PHP56 as default
AddHandler application/x-httpd-php56 .php
<IfModule mod_suphp.c>
suPHP_ConfigPath /opt/php56/lib
</IfModule>
새 PHP 핸들러는 이렇게 생겼습니다:
# php -- BEGIN cPanel-generated handler, do not edit # Set the “ea-php74” package as the default “PHP” programming language. <IfModule mime_module> AddHandler application/x-httpd-ea-php74 .php .php7 .phtml </IfModule> # php -- END cPanel-generated handler, do not edit
제 경우에는 MultiPHP Manager로 업그레이드하자 public_html 폴더에 7.4 PHP 핸들러가 생성되었는데, 예전 PHP 5.6 핸들러가 이미 public_html보다 한 단계 위, 즉 루트 디렉터리 위 폴더에 있었습니다. 그것이 오류의 원인이었습니다. 하나의 웹사이트에서 여러 PHP 핸들러를 동시에 실행할 수는 없습니다.
해결 방법은 루트 디렉터리 한 단계 위에 있는 .htaccess 파일(PHP 5.6)을 그냥 삭제하는 것이었습니다(파일을 지우기 싫다면 이름을 바꾸세요). 이제 아주 잘 작동합니다!
