mouse 发表于 2017-7-6 14:38:57

Mac安装V8Js

背景
  最近在做一个小项目,里面有个模块需要在php里调用js脚本并拿到执行结果。
  环境:mac 10.10.1、php5.5.14
  参考文章:http://www.phpied.com/installing-v8js-for-php-on-a-mac/

一、V8引擎 和 V8Js介绍
  V8引擎(https://github.com/v8/v8)是Google的开源JavaScript引擎,性能很高,NodeJs就是采用了V8引擎。V8的作用就解析、运行JavaScript脚本,可以简单理解为JavaScript的解析器。
  V8Js(https://github.com/phpv8/v8js)是php的一个插件(PECL扩展),是基于V8的,所以叫V8Js
  在安装V8Js扩展后,即可在php中调用其接口来执行Js代码,效果就像是:



<?php
class Foo {
var $bar = null;
}
$v8 = new V8Js();
$v8->foo = new Foo;
// This prints "no"
$v8->executeString('print( "bar" in PHP.foo ? "yes" : "no" );');
?>
  可以看到“executeString”这个方法执行了js代码(还混杂着php)
  看起来不伦不类,但如何用V8Js取决于coder,你完全可以不使用V8Js中的某些功能(例如和PHP混用)。

二、安装V8
  Mac用户,推荐用brew安装:
  如果你还没有HomeBrew,那就安装一个:



$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  下面是安装V8



$ brew install v8
  验证是否安装成功,启动v8试试



$ v8
V8 version 5.1.281.47
> var a = 1;
> a + 1
> 2
三、安装V8Js
  我采取的是pecl,你不知道你有没有pecl?下面命令可以帮你检查



$ pecl version
  我的输出如下:



PEAR Version: 1.10.1
PHP Version: 5.5.14
Zend Engine Version: 2.5.0
...
  如果你没有pecl,可参考:http://www.jianshu.com/p/598c0fd84719的安装方法
  使用pecl安装v8js



$ sudo install pecl install v8js-0.6.4
  此处注意,最新版的v8js需要php7(1.3.x),由于我是php5,所以只能装0.6.x版本的
  如果你是php7,又想安装最新版的,则可以执行如下命令:



$ sudo install pecl install v8js
四、配置php并测试
  先找到自己php的配置文件在哪,可以通过phpinfo查看(搜索:php.ini)php配置文件路径。
  在配置中添加一行:



extension=v8js.so
  这里需要注意一下pecl的扩展安装目录,和php的扩展目录是否一致。
  php的扩展目录可以通过phpinfo查看
  pecl的扩展安装目录可以通过如下命令查看



$ pecl config-show | grep extension
  我的输出是:



$ PHP extension directory      ext_dir          /usr/lib/php/extensions/no-debug-non-zts-20121212
  如果发现不一样,把pecl的扩展安装目录下的v8js.so复制到php的扩展目录即可。
  配置完后记得重启一下apahce(重新加载php配置)
  如何测试?
  如果你用ThinkPHP框架(3.2.x)版本,由于命名空间的存在所以需要这样new出V8Js对象:



$v8 = new \V8Js();
  接着调用$v8对象的executeString方法即可:



$v8->executeString(‘print("hello v8js!")’);
  如果看见网页上输出“hello v8js!”就表示v8js安装成功了。
  更多v8js用法可以参考官方文档:http://php.net/manual/zh/book.v8js.php
页: [1]
查看完整版本: Mac安装V8Js