设为首页 收藏本站
查看: 1212|回复: 0

[经验分享] Mac安装V8Js

[复制链接]

尚未签到

发表于 2017-7-6 14:38:57 | 显示全部楼层 |阅读模式
背景
  最近在做一个小项目,里面有个模块需要在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 [sample shell]
> 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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-391034-1-1.html 上篇帖子: 转:Hash, MAC,HMAC说明 下篇帖子: mac命令行对复杂ipa包重新签名
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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