For the complete documentation index, see llms.txt. This page is also available as Markdown.

PHP 버전업에 따른 변경점

PHP가 기존 버전에서 8버전으로 업그레이드되었습니다. 개발 언어 자체의 세세한 변경점은 PHP 공식 매뉴얼을 참고해주세요. 여기서는 고도몰에서 달라진 특징만 쉽게 설명드리겠습니다.

1. 엄격한 타입 관리

이전 버전에서는 숫자가 아닌 값을 숫자처럼 계산하면 “경고(Warning)”만 나왔습니다. 예를 들어, 아래와 같은 코드가 있었습니다:

count('2'); // 문자열 "2"를 count()에 넣음
  • 이전 버전 → 경고만 발생하고 실행은 계속됨

  • PHP 8 → 경고가 아니라 에러가 발생하여 실행이 멈춤

즉, PHP가 더 엄격하게 데이터를 구분하게 된 것입니다.


고도몰에서는 이전 버전의 느슨한 타입 체크 (특히 널, 배열) 에서 8버전에 엄격한 타입 체크로 변경 시, 기존 소스에 위반되는 문법들이 대부분 허용해 왔으므로 사이드이펙트 우려, 이를 방지하고자 gd_count()라는 자체 함수가 임시 적용되어 있습니다.

// PHP 8버전 호환을 위해 변경됨
gd_count('2'); // 안전하게 동작

2. 암호화 모듈

Mcrypt 모듈이 더이상 지원되지 않습니다.

DEPRECATED as of PHP 7.1.0 and REMOVED as of PHP 7.2.0

모든 Mcrypt 암호화는 openSSL 등 다른 암호화 알고리즘을 사용하도록 변경되었습니다.

mcrypt -> openssl 교체 작업 예시 코드

3. 0으로 나누기 방지 (안전 나누기)

PHP 8버전에서는 나누기 연산에서 분모(나누는 값)가 0이면 즉시 에러가 발생합니다. 쇼핑몰 지표(전환율, 평균값 등)를 계산할 때 분모가 0이 될 수 있어, 화면이 멈추거나 오류가 노출될 위험이 있습니다.

이 문제를 막기 위해 고도몰은 다음 헬퍼를 제공합니다:

4. 외부 PHP 라이브러리 호환성 확인

상점에 직접 설치한 외부 PHP 라이브러리가 있다면 PHP 8 호환 여부를 확인하고 필요 시 업데이트해 주세요.

직접 설치한 라이브러리는 각 공식 저장소에서 PHP 8 지원 버전을 확인해 주세요.

5. 소스 튜닝 관련 확인

🗑️ 의미 없는 튜닝 파일 정리

불필요한 튜닝 파일이 많을수록 이전 작업 시간이 늘어나고 오류 가능성이 높아집니다. 아래 기준에 해당하는 파일은 사전에 제거해 주세요.

유형

설명

예시

빈 클래스

상속만 받고 추가 정의가 없는 파일

class MyOrder extends GdOrder {} (본문 없음)

빈 생성자

parent::__construct() 호출만 있는 파일

function __construct() { parent::__construct(); }

빈 컨트롤러

parent::index() 호출만 있는 파일

function index() { parent::index(); }

복붙 파일

원본 소스와 내용이 완전히 동일한 파일

diff 결과가 없는 튜닝 파일

📂 상점 튜닝 경로

구분

경로

관리자 스킨

{상점}/admin/*

고도몰 로직

{상점}/module/*

🔤 PHP8 예약어 충돌 확인

PHP8에서 새롭게 예약어로 지정된 단어를 클래스명·함수명으로 사용하고 있다면 수동으로 변경해야 합니다.

💥 충돌 대상 예약어

수정 예시

6. DB 커스터마이징 관련 확인

🔑 PK 없는 커스텀 테이블

직접 생성한 커스텀 테이블에 Primary Key(PK)가 없으면 MySQL 8 이전 시 DDL 오류가 발생합니다. 이전 전에 해당 테이블에 PK를 추가해 주세요.

⚙️ MyISAM 엔진 사용 테이블

MySQL 8 환경에서는 MyISAM 엔진을 사용할 수 없습니다. 직접 생성한 커스텀 테이블 중 MyISAM을 사용하는 경우 업그레이드 전에 InnoDB로 변경해 주세요.

🔄 백업 테이블 컬럼 동기화

원본 테이블(예: es_order, es_orderHandle)에 컬럼을 추가했다면, 백업 테이블(es_*Original)에도 동일하게 컬럼을 반영해 주세요.

🔴 동기화가 누락되면 이전 후 취소·교환·반품 등 클레임 처리 시 오류가 발생합니다.

동기화 누락 시 발생 문제 예시

컬럼 추가 예시

7. 상품 등록/수정 관련 확인

🔍 현재 상점이 어떤 화면을 사용 중인지 확인하는 방법

아래 쿼리로 현재 상점의 상품 등록 화면 설정을 확인할 수 있습니다.

쿼리 결과

사용 중인 화면

결과 없음 또는 {"use": "n"}

goods_register.php (기존 화면)

{"use": "y"}

goods_register_option_stock.php (개선 화면)


🖥️ 화면 차이

goods_register.php (기존 화면)

  • 관리자 > 상품 등록 화면에서 옵션 탭재고 탭별도로 분리되어 있습니다.

  • 옵션을 설정한 뒤 별도 탭으로 이동하여 재고를 입력하는 방식입니다.

goods_register_option_stock.php (개선 화면)

  • 옵션과 재고가 하나의 탭에 통합되어 있습니다.

  • 옵션 설정 시 재고 수량을 바로 같은 화면에서 함께 입력할 수 있습니다.


⚠️ 기존 화면(goods_register.php) 사용 시 주의사항

goods_register.php 파일을 직접 튜닝하여 사용하는 상점은 이전 후 상품 등록/수정 기능에서 오류가 발생할 수 있습니다.

  • 해당 파일을 튜닝한 경우 이전 전후로 별도 QA 및 수정이 필요합니다

  • goods_register_option_stock.php로의 변경을 권장합니다

🔧 개선 화면으로 전환하는 방법

아래 방법으로 처리할 수 있습니다.

8. 이미지/CDN 관련 확인

Proplus 서버의 경우 해당 사항은 별도 확인하지 않으셔도 됩니다.

상품 상세 설명을 HTML 탭으로 직접 편집하면서 이미지 URL을 절대 경로로 입력한 경우, 버전 업그레이드 후 이미지가 정상 표시되지 않을 수 있습니다.

🔍 왜 문제가 되나요?

고도몰은 서버 환경에 따라 CDN 도메인이 다릅니다.

환경

CDN URL 형식

예시

Pro 서버

IP가 포함된 CDN 서비스 도메인

https://cdn-pro-web-250-211.cdn-nhncommerce.com/...

Proplus 서버

업체 실제 도메인 기반 URL

https://my-shop-domain.com/...

서버 환경에 따라 CDN 도메인이 달라지기 때문에, HTML 탭에서 절대 URL로 입력된 이미지는 업그레이드 이후 깨질 수 있기 때문에 미리 점검 부탁드립니다.

🛠️ 확인 방법

상품 상세 설명 데이터에 절대 CDN URL이 포함된 경우가 있는지 DB에서 직접 확인해 주세요.

해당 데이터가 존재한다면 아래와 같이 절대 URL을 상대 URL로 수정해 주세요.

Last updated