PHP version
PHP 7.2.34 (cli) (built: Nov 30 2020 14:13:42) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.34, Copyright (c) 1999-2018, by Zend Technologies
phpize version
Configuring for:
PHP Api Version: 20170718
Zend Module Api No: 20170718
Zend Extension Api No: 320170718
开始安装
(brew 自行安装)
brew install v8
我安装后 v8的版本 8.8.278.15,默认安装的目录为 /usr/local/Cellar/v8/8.8.278.15/
进入目录
cd /usr/local/Cellar/v8/8.8.278.15/libexec
创建lib
mkdir lib
将对应文件放入到lib下
cp /usr/local/Cellar/v8/8.8.278.15/libexec/* /usr/local/Cellar/v8/8.8.278.15/libexec/lib
这里会报警说目录未成功移动,不用管,只需移动文件即可
此时v8算告一段落
安装php v8js扩展
你可以尝试直接使用pecl install v8js 如果报错,不管报什么错,直接放弃使用这种方式吧,使用编译安装
如果遇到其他安装问题可参考(https://github.com/phpv8/v8js/issues/457#issuecomment-736812801)
git clone https://github.com/stesie/v8js/tree/fixes-for-libv8-8.7 (注意这里我使用的fix版本,原因是我测试了其他几个正式版本都无法正常configure,都报错libv8**找不到,当然你可以尝试使用正式版本进行构建)
phpize
./configure CXXFLAGS="-Wno-c++11-narrowing" LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS" --with-v8js=/usr/local/Cellar/v8/8.8.278.15/libexec/ --with-php-conf=你的phpconf 文件地址 (这个命令里有一个CPPFLAGS需要注意,我在安装第一次时没有指定他,报了指针跟非指针问题,你可以尝试加上,如果还报错,那就去掉重新编译)
make && make install
将v8js.so 加入到php.ini里
问题记录
如果报错 pleace reinstall v8 这种应该是你的v8安装目录libexec目录里没有创建lib目录,也没有挪文件
如果报错 could not determine libv8 version 这种是安装包不兼容问题,可以尝试我使用的安装包
如果报错 could not find libv8_libplat form library 这种也是安装包不兼容问题,可以尝试我使用的安装包
本次安装v8js耗时3天,遇见各种问题,解决各种问题,主要的还是pecl的v8版本与v8本身有不兼容问题,且主要版本也有点问题,所以使用的fix版本,希望有跟我一样问题的人可以有一个参考
如果你安装出现其他问题,欢迎留言,我们一起解决