当前位置:论坛首页 > Linux面板 > 讨论

宝塔面板PHP7.2安装编译php-v8js扩展的教程

发表在 Linux面板2020-7-9 20:41 [复制链接] 10 8597

本帖最后由 yaojiu 于 2023-5-5 20:31 编辑

1.安装依赖
  1. yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
复制代码

2.构建最新的C ++编译器
您可以使用检查当前版本。如果有gcc -v在运行,最低版本8.3.0
  1. sudo yum install bzip2
  2. cd /usr/local/src
  3. wget http://d1.cmdtz.com/dll/gcc-8.3.0.tar.gz
  4. tar zxf gcc-8.3.0.tar.gz
  5. cd gcc-8.3.0/
  6. ./contrib/download_prerequisites
  7. ./configure --disable-multilib --enable-languages=c,c++
  8. make
  9. sudo make install
  10. export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
复制代码

3.安装V8
  1. # 添加 depot_tools
  2. cd /usr/local
  3. git clone https://chromium.googlesource.com/chromium/tools/depot_tools
  4. export PATH=`pwd`/depot_tools:"$PATH"
复制代码
  1. # 拉取 v8
  2. cd /usr/local/src
  3. fetch v8
  4. cd v8
  5. git checkout 7.5.288.23 # v8_版本号
  6. gclient sync
  7. ./build/install-build-deps.sh
  8. gn gen out.gn/library --args='use_custom_libcxx=false is_component_build=true is_debug=false target_cpu="x64" use_goma=false goma_dir="None" v8_enable_backtrace=true v8_enable_disassembler=true v8_enable_object_print=true v8_enable_verify_heap=true'
  9. ninja -C out.gn/library libv8.so
复制代码
  1. # 移动文件至 /opt/v8
  2. sudo mkdir -p /opt/v8/{lib,include}
  3. sudo cp -v out.gn/library/lib*.so out.gn/library/*_blob.bin out.gn/library/icudtl.dat /opt/v8/lib/
  4. sudo cp -vR include/* /opt/v8/include/
复制代码
  1. # 更新库
  2. sudo ldconfig
复制代码
2:安装v8js-2.1.1
  1. wget https://pecl.php.net/get/v8js-2.1.1.tgz
复制代码
  1. tar -xvf v8js-2.1.1.tgz
复制代码
  1. cd v8js-2.1.1
复制代码
  1. phpize        #如报错,请使用   /www/server/php/72/bin/phpize
复制代码
  1. ./configure --with-php-config=/www/server/php/72/bin/php-config --with-v8js         #注意php的目录自行更换 如果这个报错,就用下面那个
复制代码
  1. #上面那条命令报错再用这个   ./configure --with-v8js=/opt/v8 LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS" --with-php-config=/www/server/php/72/bin/php-config
复制代码

  1. make && make install
复制代码

3,在php7.2配置文件合适的地方加上

  1. extension = "v8js.so"
复制代码

重启PHP后查看phpinfo可以看到其中已经包含v8js扩展




使用道具 举报 只看该作者 回复
发表于 2022-5-3 22:28:44 | 显示全部楼层
装了半天 现在马上编译提示不支持centos
使用道具 举报 回复 支持 1 反对 0
发表于 2020-10-9 21:23:12 | 显示全部楼层
这v8js真的太难装了。搞了一天,最后试试你的看下行不行。
使用道具 举报 回复 支持 反对
发表于 2020-10-9 23:01:59 | 显示全部楼层
卡在 ./build/install-build-deps.sh 这里了。
报错。
which: no lsb_release in (/usr/local/depot_tools:/sbin:/bin:/usr/sbin:/usr/bin)
ERROR: lsb_release not found in $PATH
使用道具 举报 回复 支持 反对
发表于 2020-10-10 19:22:43 | 显示全部楼层
装好了。最关键的问题还是gcc编译问题。
使用道具 举报 回复 支持 反对
发表于 2022-5-5 16:57:10 | 显示全部楼层
configure: error: could not determine libv8 version
现在只能到这里了搞不好
使用道具 举报 回复 支持 反对
发表于 2022-6-22 21:18:03 | 显示全部楼层
guagua 发表于 2022-5-5 16:57
configure: error: could not determine libv8 version
现在只能到这里了搞不好

已更新教程,使用倒数第三行代码就行了
  1. ./configure --with-v8js=/opt/v8 LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS" --with-php-config=/www/server/php/72/bin/php-config
复制代码
使用道具 举报 回复 支持 反对
发表于 2024-1-15 01:25:17 | 显示全部楼层
深蓝 发表于 2020-10-10 19:22
装好了。最关键的问题还是gcc编译问题。

v8默认不使用gcc,可以查看ninja.build,使用的是clang
使用道具 举报 回复 支持 反对
发表于 2024-1-15 01:32:07 | 显示全部楼层
guagua 发表于 2022-5-3 22:28
装了半天 现在马上编译提示不支持centos

install-build-deps.sh这个shell脚本其实只是辅助而已,它会识别你的发行版和版本,然后用包管理器安装devel开发工具,clang和c++等等,如果提示不支持,可以跳过,安装好必要的依赖就可以了,out.gn/library是编译库的目录,out/x64.release则是d8二进制主程序所用,tools/dev/gm.py只支持二者,所以可以用gn gen生成配置,具体参数gn gey --help,之后ninja -C开始编译,由于源码过于庞大,具体编译时间取决于计算机性能
使用道具 举报 回复 支持 反对
发表于 2024-1-15 01:39:09 | 显示全部楼层
yaojiu 发表于 2022-6-22 21:18
已更新教程,使用倒数第三行代码就行了

CPPFLAGS和LDFLAGS可以省略,因为已经默认指定了,cat configure可以看到相应配置,只需要指定php-config和libv8就可以了,安装v8的时候,可以把库和头文件复制到/usr,就不用指定路径了,因为/usr已经在环境变量当中了,而且大多数configure的default libdir就是/usr,如果不会编译v8,那么可以使用包管理器安装,centos系的系统可以yum search v8,可以看到v8-devel,那么安装它就可以了,ubuntu为libv8-dev,我使用的是opensuse,软件源中没没v8,所以我只能编译
使用道具 举报 回复 支持 反对
发表于 2024-1-15 01:43:54 | 显示全部楼层
yaojiu 发表于 2022-6-22 21:18
已更新教程,使用倒数第三行代码就行了

另外,如果使用服务器编译,而服务器性能不行的话,至少需要1小时,所以不能直接在ssh当中执行编译,可以使用tmux(也可以使用其他软件)打开一个session,在这个窗口当中完成编译,这样ssh断开后进程就不会被杀死了
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表