自從上次發了一篇初探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

2. 安裝SpiderMonkey

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

以上就是安裝心得啦~

arrow
arrow
    全站熱搜

    nsysumis94 發表在 痞客邦 留言(0) 人氣()