在PHP 中运行JS

这天去zend网站上逛了逛, 看到一个monkeyspider 的标签,

http://devzone.zend.com/article/4704-Using-JavaScript-in-PHP-with-PECL-and-SpiderMonkey

嘿嘿, 原来是用c写了一个扩展php扩展 把spiderMonkey和php 联起来了。 照着试了试, 还真跑下来了, 拿上来分享一下。

首先是下载

http://ftp.mozilla.org/pub/mozilla.org/js/  js-1.7

http://pecl.php.net/package/spidermonkey   spidermonkey 的php扩展

  1. shell# tar -xzvf js-1.70.tar-gz
  2. shell# cd js/src
  3. shell# make -f Makefile.ref
  4. shell# mkdir -p /usr/local/include/js/
  5. shell# cp *.{h,tbl} /usr/local/include/js/
  6. shell# cd Linux_All_DBG.OBJ
  7. shell# cp *.h /usr/local/include/js/
  8. shell# cp js /usr/local/bin/
  9. shell# cp libjs.so /usr/local/lib/
  10. shell# ldconfig
  11. tar -zxvf spidermonkey.tar.gz
  12. 进入spidermonkey , php 扩展目录,
  13. yum install automake
  14. shell# phpize
  15. shell# ./configure
  16. edit spidermonkey.c
    Add to line 152 next:
    int JSVERSION_LATEST = 185;
  17. shell# make
  18. shell# make install

 

 

在make 的时候可能会报错, 那报错的那几行注释吧, 用了几个php 的struct 里没有的属性
在php.ini 里把这个扩展打开吧, 试试把

 

  1. <?php
  2. // create JavaScript context
  3. $js = new JSContext();
  4. // define PHP variables
  5. $a = 10;
  6. $b = 2;
  7. // assign variables to JavaScript context
  8. $js->assign(‘a’, $a);
  9. $js->assign(‘b’, $b);
  10. // define script code
  11. $script = <<<END
  12. c = a + b;
  13. END;
  14. // evaluate script and display result
  15. echo ”The sum of $a and $b is: ” . $js->evaluateScript($script);
  16. ?>

 

发表评论

邮箱地址不会被公开。 必填项已用*标注