当前位置: 首页 > 工具软件 > v8js > 使用案例 >

Centos7宝塔面板安装PHP V8js扩展

易嘉胜
2023-12-01

前记

由于后端使用的是PHP,业务需要在请求API时生成一个JS加密的字符串,以前业务中有使用过PuPHPeteer,但是无头chrome启动很慢,对服务器压力很大,所以在这里无法直接使用,v8js就是最好的选择了。由于自己大部分时间是在写后端,前端虽然有过接触,但是近几年前端的发展速度已经让我有点学不动了。v8js github上面其实已经讲得已经很详细了,但是由于服务器环境不同,依赖不同,特别是在墙内就变得异常复杂了,现在对这php v8js 拓展安装做个详细的记录,以供查看。

安装depot_tools

国内服务器一定要用vpn否则将无法安装

#如果没有安装git,需要先安装
yum install git
cd /tmp

# depot_tools安装
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"

# 下载 v8 这一步很慢,需要耐心等待(如果你的gcc -v 版本不是7.5以上的话,请先进入底下的故障解决先升级gcc)
fetch v8
cd v8

# 选择你想编译的版本
git checkout 7.5.288.23
gclient sync

# Setup GN
tools/dev/v8gen.py -vv x64.release -- is_component_build=true use_custom_libcxx=false

# 开始编译,这里容易出错,如果报错的话,按提示,对照下面的说明
ninja -C out.gn/x64.release/

# Install to /opt/v8/
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/

安装v8js

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

cd v8js
phpize

./configure --with-v8js=/opt/v8 LDFLAGS="-lstdc++" --with-php-config=/www/server/php/72/bin/php-config

make
make test
sudo make install

故障解决

Windows可以使用phpenv,然后下载别人编译好的版本,放在PHP目录后在Phpstudy中启用此版本即可:https://www.apachelounge.com/viewtopic.php?t=6359
编译v8引擎的过程中最容易出错,最关键是要选用最新的gcc引擎,centos默认4.85的编译器会失败,要升级到最新,我这里用的是7.5版本。

# 如果提示GLIBC_2.18 not found GLIBCXX\_3.4.21 not found,这里有个巨坑,系统自带的gcc是4.8版本,make gcc7.5后,需要重启一下电脑才能生效,如果是全新的机器,如果gcc版本是7.5以下,建议先安装编译器再装其他
cd /tmp
wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.18.tar.gz

tar -xzvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build && cd build

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j4 && make install

# 
cd /tmp
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz

tar -xzvf gcc-7.5.0.tar.gz
cd gcc-7.5.0

./contrib/download_prerequisites
mkdir build && cd build

../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j4 && make install

find / -name "libstdc++.so*"
cp /tmp/gcc-7.5.0/build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24 /usr/lib64

cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.24 libstdc++.so.6

strings /usr/lib64/libstdc++.so.6 | grep GLIBC
# gcc -v 查看版本是否是刚刚安装的最新的7.5,如果不是,重启下电脑
 类似资料: