Skip to content

Install required dependencies

bash
sudo apt-get install php7.2-dev
sudo apt-get install build-essential curl git python libglib2.0-dev

Install depot_tools first (needed for source checkout)

bash
cd /tmp
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"

Download v8

bash
fetch v8
cd v8
# php7.4
git checkout 7.4.288.21
# php8.1
git checkout 10.0.139.17
gclient sync

Setup GN

bash
tools/dev/v8gen.py -vv x64.release -- is_component_build=true use_custom_libcxx=false

Build

bash
ninja -C out.gn/x64.release/

Install to /opt/v8/

bash
sudo mkdir -p /opt/v8/{lib,include}
sudo cp out.gn/x64.release/lib*.so out.gn/x64.release/*_blob.bin \
out.gn/x64.release/icudtl.dat /opt/v8/lib/
sudo cp -R include/* /opt/v8/include/

sudo apt-get install patchelf
for A in /opt/v8/lib/*.so; do sudo patchelf --set-rpath '$ORIGIN' $A; done

cd /tmp
git clone https://github.com/phpv8/v8js.git
cd v8js

php7.4

bash
git checkout php7 && phpize7.4
./configure --with-php-config=/usr/bin/php-config7.4 --with-v8js=/opt/v8

php8.1

bash
git checkout php8 && phpize8.1
./configure --with-php-config=/usr/bin/php-config8.1 --with-v8js=/opt/v8

build

bash
make
make test
sudo make install

Php.ini

ini
extension=v8js.so