終於成功將PHP架上去了
這次是利用php+thttpd完成的,因為boa+php一直試不成功


開發環境:
Fedora Core 5
php 4.4.7
thttpd 2.21b
目標板:NET-Start! IXP 420

0.假設已經開裝好該有的東西,包括make, gcc, toolchain...etc
主機端與目標板網路已經連接,且可以正常運作
php, thttpd原始檔都放~/ixp
裝好之後會放到/usr/local/sbin
以最簡單裝好為目標,其他設定就請自行修改吧,
另外,php目前只支援thttpd的2.21b,如果用太新版本的話,
他還是會要求你換成2.21b

1.下載php, thttpd
#wget http://ftp.isu.edu.tw/pub/Unix/Web/PHP/distributions/php-4.4.7.tar.gz
#wget http://www.acme.com/software/thttpd/thttpd-2.21b.tar.gz

2.解開
#tar -zxvf php-4.4.7.tar.gz
#tar -zxvf thttpd-2.21b.tar.gz

3.建置php
#cd php-4.4.7
#./configure  --disable-zend-memory-manager --with-thttpd=../thttpd-2.21b --disable-all
#vi Makefile
  ->修改CC跟CPP 將原來的gcc改成armeb-linux-gcc
#make clean && make && make install
  ->如果Zend/zend_strtod.c 240行有錯的話,
#vi Zend/zend_strtod.c
  ->將240, 241 的exactly.....註解起來
#make clean && make && make install
 重新make

4.buld thttpd
#cd ../thttpd-2.21b
#./configure
#vi Makefile

  ->修改CC 將原來的gcc改成armeb-linux-gcc
#make
  ->編成功之後,執行檔就在目錄thttpd-2.21b底下的thttpd

5.最佳化縮小程式體積
  ->因為編好的thttpd還有2MB多,還嫌太大,
    所以要用toolchain提供的armeb-linux-strip縮小程式體積
#armeb-linux-strip thttpd

6.將thttpd放到板子上,以下動作在目標板上執行
#mkdir /usr/local
#mkdir /usr/local/sbin
#cd /usr/local/sbin

自行利用rs232, ftp將thttpd執行檔下載到板子上
網頁跟thttpd放一起
#chmod +x thttpd
#echo "<? phpinfo(); ?>" > test.php

7.從主機端用瀏覽器連到板子上例如http://192.168.0.37/test.php
如果有印出php資訊就表示成功了


P.S如果要跑cgi的話:
mkdir /usr/local/sbin/cgi-bin
cgi檔案放到那裡面去,要注意幾點
1.前面幾行要印出"Content-type: text/plain" 後面印出的才有用
2.檔案權限是755
3.thttpd執行的時候需加上cgipat的選項
#./thttpd -c /cgi-bin/*

創作者介紹

koukai的Blog

koukaipan 發表在 痞客邦 PIXNET 留言(3) 人氣()


留言列表 (3)

發表留言
  • mapdog
  • 打开的只有脚本

    我按照你说的做了,打开的只有脚本,不过我生成的是pc上的,没有改gcc.cpp
  • 請問,你所說的"打开的只有脚本"指的是打開甚麼?

    koukaipan 於 2008/09/09 13:39 回覆

  • lix
  • 請問一下,php的make install好像有些問題。

    安裝路徑應該要重新指定吧?

    想請問說該放在哪裡呢?

    謝謝哩
  • 請問你的錯誤訊息是?
    印象中php並不用真的進行安裝到系統中,他的make install應該是指patch thttpd原始碼中必要的檔案而已,(純粹猜測,因為好久以前了orz)

    koukaipan 於 2009/01/10 17:11 回覆

  • flames
  • 請問一下,php的make install 發生錯誤

    錯誤訊息:
    /bin/sh: path: not fount
  • /bin/sh一般是用symbolic link連到你的預設shell執行檔例如:dash、bash
    請先確定他是否存在,指令可下
    ls -l /bin/sh
    如果不存在的話自行建立link也許可以解決:
    sudo ln -s /bin/bash /bin/sh

    koukaipan 於 2009/08/31 21:11 回覆