php 에서 v8js(구글에서 개발한 자바스크립트;javascript 엔진) v8 을 php 에서 사용하고 싶습니다.

확장 모듈 로드하려면 재컴파일해야 할것 같은데, 컴파일 방법 알려주세요.

1 답변

0 투표

아래 내용 그대로 “답변” 칸에 붙여 넣으면 됩니다. (환경별로 Ubuntu/Debian, CentOS/RHEL 기준 예시 포함)


PHP에서 v8js는 보통 PECL 확장으로 설치합니다. 다만 v8jsV8(자바스크립트 엔진) 버전 호환성이 민감해서, “그냥 컴파일”이 항상 쉽진 않습니다. 가능하면 배포판 패키지(이미 빌드된 것)를 먼저 확인하는 걸 추천합니다.

1) 설치 전 확인

php -v
php -i | grep -i "Thread Safety"
php --ini
  • PHP 버전/TS(NTS)/ini 경로 확인
  • 서버가 NTS인데 TS용 모듈을 붙이면 로딩이 안 됩니다.

2) Ubuntu / Debian 계열 (권장 흐름)

(1) 빌드 도구 + 의존성 설치

sudo apt update
sudo apt install -y php-dev php-pear build-essential pkg-config git \
  libv8-dev

(2) PECL로 v8js 설치

sudo pecl install v8js

(3) extension 활성화

echo "extension=v8js.so" | sudo tee /etc/php/*/mods-available/v8js.ini
sudo phpenmod v8js
sudo systemctl restart apache2 || sudo systemctl restart php*-fpm

(4) 동작 확인

php -m | grep -i v8js
php -r '$v=new V8Js(); echo $v->executeString("1+2");'

pecl install v8js 단계에서 에러가 나면 대부분 libv8-dev 버전(= V8 버전)과 v8js 소스의 호환 문제입니다. 이 경우는 아래 “호환 문제 해결 팁”을 참고하세요.


3) CentOS / RHEL 계열(개념)

RHEL 계열은 기본 repo만으로 libv8 준비가 어려운 경우가 많아, EPEL/Remi 등 외부 repo 또는 직접 빌드가 필요할 수 있습니다. 기본 흐름은 동일합니다.

sudo yum groupinstall -y "Development Tools"
sudo yum install -y php-devel php-pear gcc-c++ make
# libv8 / v8 개발헤더 준비(환경에 따라 경로/패키지명이 달라질 수 있음)
sudo pecl install v8js

4) 호환 문제(빌드 실패)일 때 체크 포인트

  1. PHP 버전과 v8js 버전

  2. 최신 PHP에서 오래된 v8js 소스는 빌드가 깨질 수 있습니다.

  3. 반대로 최신 v8js가 오래된 PHP에서 안 맞을 수도 있습니다.

  4. V8 엔진(libv8) 버전

  5. v8js는 내부적으로 특정 V8 API에 의존해서, libv8 버전이 안 맞으면 컴파일 오류가 납니다.

  6. 해결 방법은 보통:

    • (A) OS 패키지로 제공되는 libv8-dev맞는 v8js 버전을 사용하거나
    • (B) v8js가 요구하는 V8 버전을 맞춰 V8을 별도 빌드해야 합니다. (난이도↑)
  7. 웹서비스용이라면 다른 대안도 고려

  8. 단순히 JS 실행이 목적이면, PHP에서 Node.js를 실행하거나(프로세스 분리)

  9. 지도/공간정보 처리라면 shp/dbf는 PHP에서 굳이 V8 없이도 처리 가능합니다. DBF는 PHP에서 읽을 수 있는 라이브러리(순수 PHP)도 있고, shp는 GDAL/OGR 같은 툴/서비스로 변환해 쓰는 방식이 운영이 더 편한 경우가 많습니다.

5) 최소 예제

<?php
$v8 = new V8Js();
echo $v8->executeString('var a=10; a+5;'); // 15

원하시면 현재 서버 OS(우분투/센토스), PHP 버전, Apache냐 PHP-FPM이냐, 그리고 pecl install v8js 에러 로그(마지막 30~50줄)만 붙여주시면, 그 로그 기준으로 “어느 버전 조합으로 가야 하는지”까지 딱 맞춰서 안내해드릴게요.

구로역 맛집 시흥동 맛집
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
add
...