2008年4月27日星期日

當 PHP Module 是由多個 C 檔案來組成的時候

如果 PHP Module 是由多個 C 檔案來組成, 我們便需要修改 config.m4 內的 PHP_NEW_EXTENSION 的內容. 例如 hello_world 是由 1.c 和 2.c 組成, 則:

PHP_NEW_EXTENSION (hello_world, 1.c 2.c, $ext_shared)



my_source="1.c 2.c"
PHP_NEW_EXTENSION (hello_world, $my_source, $ext_shared)

注意的是在等號兩邊是沒有空格的.

Ububtu 開放 root 帳號

Ubuntu Linux 預設是不開放 root 帳號的, 所以我們需要經常使用 sudo 指令. 如果我們需要開放 root 帳號, 我們可以在 Users settings 選擇 root 帳號:

然後在 Properties 內設定密碼:

再在 Login Window Preferences 的 Security 頁內選擇 Allow local system administrator login:


這樣我們便可以用 root 帳號來登入了.

2008年4月24日星期四

在 Ubuntu 7.10 開發 PHP5 Module (模組)

由於工作關係, 我需要開發一個 PHP5 Module. 我看過網上的文章和 PHP 手冊, 發覺大部份例子都是使用 ext_skel 來建立PHP Module project. 但是 ext_skel 只在 PHP5 源碼找到. 如果沒有下載和由 PHP5 源碼來建立 PHP5 系統的話, 在 Ubuntu 是找不到 ext_skel 的. 原來之前 Ubuntu 已經將 ext_skel 移除了, 現在它改為建議用 pecl-gen 來代替 ext_skel.

要使用 pecl-gen, 首先我們需要安裝 pear 和有關的 package:

php5-cli
php5-dev
php-pear

如果電腦可以上網, 我們可以使用 pear 來安裝 pecl-gen:

sudo pear install CodeGen_PECL

如果電腦不可以上網, 我們可以先找一台能夠上網的電腦到 pear 的網站下載以下檔案:

CodeGen package
CodeGen_PECL package

然後將檔案複製到不能上網的電腦上.

假設 CodeGen 和 CodeGen_PECL 的檔案為

CodeGen-1.0.5.tgz
CodeGen_PECL-1.1.2.tgz

我們可以用以下方法安裝:

sudo pear install CodeGen-1.0.5.tgz
sudo pear install CodeGen_PECL-1.1.2.tgz

安裝完成後, 我們可以輸入 pecl-gen 來檢正是否安裝成功.

要建立 PHP Module project, 我們可以跟 ext_skel 一樣:

pecl-gen --extname=[your module name]

例如 module name 是 hello_world, 則輸入:

pecl-gen --extname=hello_world

而該 module 的檔案會在 [your module name] 目錄內.

要 make PHP module, 我們可以輸入:

phpize
./configure
make
make test

安裝 module 則可以輸入:

sudo make install

然後建立一個 ini 檔案:

touch [your module name].ini

在 ini 檔案內加入:

extension=[your module name].so

之後複製 ini 檔案到 /etc/php5/cli/conf.d 目錄內:

sudo cp [your module name].ini /etc/php5/cli/conf.d

然後 restart WWW server 就可以開始使用 Module 了:

sudo /etc/init.d/apache2 restart

當然, 我們可以用 phpinfo() 來檢查 module 是否已經載入