自從上次發了一篇初探SpiderMonkey之後,已經很久沒碰spidermonkey了,今天突然心血來潮想說既然spidermonkey都可以embeded在C裡面了,那PHP可不可以呢?上網google了一下,發現果然有善心人士(bombstrike)發了一個PECL的套件,讓PHP也可以跑javascript了,不過有個限制就是這個套件一定要跑在PHP 5.3以後(囧rz),PHP 5.3才剛release沒多久阿....這也未免太新了一點,人家的開發環境還停在5.2的說,用apt-get查一下目前stable的package果然還在5.2,該不會要我用source裝吧?
好在網路上的善心人士不只一位,dotdeb已經把最新的PHP 5.3包好了,只需將apt-get的source指到php53.dotdeb.org就可以安裝啦。
1. PHP安裝
先設定apt-get
#vi /etc/apt-get/source.list |
加入下面兩行
deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all
然後更新package list並且升級php(假設還沒裝PHP的話記得要裝php5-dev,因為等一下裝pecl的時候會用phpize)
#apt-get update #apt-get upgrade or #apt-get install php5 php5-cli php5-dev |
SpiderMonkey的source放在http://ftp.mozilla.org/pub/mozilla.org/js/,安裝方式大家可以參考devzone.zend.com
#wget http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz #tar -zxvf js-1.8.0-rc1.tar.gz #cd js/src #make -f Makefile.ref #mkdir -p /usr/local/include/js/ #cp *.{h,cpl} /usr/local/include/js/ #cd Linux_All_DBG.OBJ/ #cp *.h /usr/local/include/js/ #cp js /usr/local/bin #cp libjs.so /usr/local/lib/ #ldconfig |
3. 安裝SpiderMonkey-PECL
我們要把SpiderMonkey的pecl套件抓下來,你可以透過svn或者直接到http://pecl.php.net/package/spidermonkey抓取最新的tar ball下來。
(1)svn安裝
#svn co https://ookoo.org/svn/pecl-spidermonkey #cd pecl-spidermonkey #phpize #./configure #make #make install |
(2)tar ball安裝
#wget http://pecl.php.net/get/spidermonkey-0.1.3.tgz #tar -zxvf spidermonkey-0.1.3.tgz #cd spidermonkey-0.1.3 #phpize #./configure #make #make install |
我自己是用tar ball安裝,安裝完畢時,會有訊息跟你說裝到哪裡去,我的spidermonkey是裝在/usr/lib/php5/20090626+lfs/spidermonkey.so,所以我們必須要在php.ini中加上一條
extension=/usr/lib/php5/20090626+lfs/spidermonkey.so
這樣php就可以把spidermonkey extension load進來囉
裝完後可以用下面程式測試一下(From devzone.zend.com)
<?php
// create JavaScript context
$js = new JSContext();
// define PHP variables
$a = 10;
$b = 2;
// assign variables to JavaScript context
$js->assign('a', $a);
$js->assign('b', $b);
// define script code
$script = <<<END
c = a + b;
END;
// evaluate script and display result
echo "The sum of $a and $b is: " . $js->evaluateScript($script);
?>
如果正常的話程式會輸出:
The sum of 10 and 2 is: 12
以上就是安裝心得啦~
留言列表