使用V8JS在PHP代码中执行JS

V8JS是一个可以在phpclass 文件中执行js代码的引擎,使用方法也是比较简单,在网上可以找到example。但是我接下来要说点实际的。


安装

首先主要是安装很麻烦,接下来我会说一下macos如何安装


1. 安装V8引擎

brew install v8


2. image.png

记住这个路径

注意注意注意注意注意注意注意注意注意注意注意注意

查看 /opt/homebrew/Cellar/v8/********/libexec 下面有没有lib目录 没有的话 执行创建

mkdir -p /opt/homebrew/Cellar/v8/********/libexec/lib

把libexec下面的的所有文件拷贝一份, 放到lib下面。

cp /usr/local/Cellar/v8/*******/libexec/* /usr/local/Cellar/v8/******/libexec/lib

其中*****号为你安装的目录版本号

做这一步的目的是, 安装v8js的时候, 默认是取lib目录下面去找。不做处理的话会一直报 下面错误。不管是pecl 还是自己编译都不会通过。


3. 安装v8js扩展

注意v8js对应目录替换为你安装的v8目录

(1)源码编译安装

将v8js克隆到本地: git clone https://github.com/phpv8/v8js

从源代码构建v8js:

https://github.com/phpv8/v8js/issues/457#issuecomment-736812801

这个issue记录了一些错误,所以我贴出原链接

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

cd v8js

phpize

./configure --with-v8js="/opt/homebrew/Cellar/v8/9.3.345.19/libexec" LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS"

sed -i -e '132s/retval/object/g' v8js_v8object_class.cc 

一定要执行上面这个命令 不然make是不可能成功的  之前就是不知道这个 被卡了一上午

make && make install 

php -ini

code php.ini

加入 extension=v8js.so

重启php进程

注意 尽量测试一下 make test 看看是否make成功了。

并且只有php7才可以使用,php8我目前没有成功 不过由于爬虫 所以php7是可以接受的



如何使用

image.png

只需要把外部的js路径传递进来,并且需要执行的方法明以及参数,就可以直接获得返回值

成长记录

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容