[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > 其它 > 正文
在Apache 上以 DSO 方式安裝 PHP
本文出自:http://www.freelamp.com 作者: 徐永久 (2002-02-21 17:00:01)
如果以靜態方式安裝Apache ,則每次 PHP 有升級,就必須重新安裝 Apache,所以,
在實踐當中,筆者總是建議用戶以 DSO 方式來安裝 PHP。如果需要安裝 ApacheSSL 時,
你就更會感覺到DSO 的方便和快捷了。
DSO 字面的含義就是動態共享對象,詳細的文檔可以參考 Apache 的在線手冊。在使用
 DSO 之前,你必須保証自己的 Apache 能支持 DSO ,因此,在編譯PHP 時,應該使用 
 --with-apxs=/usr/local/apache/apxs 的參數,當然這裡的 apxs 所在的路徑需要根
 據你自己的安裝路徑來修改。

有可能你會遇到下面的錯誤報告:

configure: error: Sorry, I cannot run apxs. Either you need to install Perl 
or you need to pass the absolute path of apxs by using --with-apxs=/absolute/path/to/apxs

如果碰到這樣的問題,一般是 Perl 已經安裝並且已經指定了 apxs 的路徑,但是 
Apache 不支持 mod_so。Apache 的缺省編譯是支持 mod_so 的,除非你在編譯時使用
了 --disable-module=so 參數。

最常見的問題就是在運行了 #./configure --with-apxs=/usr/local/apache/apxs 之
看到下面的錯誤報告:

WARNING: Your /usr/local/apache/bin/apxs script is most likely broken. 

所以,我們有必要檢查一下 apxs 這個腳本文件。在文件中查看下面的行:

my $CFG_CFLAGS_SHLIB = ' ';
my $CFG_LD_SHLIB = ' ';
my $CFG_LDFLAGS_SHLIB = ' ';
如果以上幾行真是空的話,那 apxs 就真的有問題了。正確的應該是:

my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE';
my $CFG_LD_SHLIB = 'gcc';
my $CFG_LDFLAGS_SHLIB = q(-shared);


Red Hat 的6.1 和 6.2 中的 apxs 也有問題,下面的行:

my $CFG_LIBEXECDIR = 'modules';
應該修改為:

my $CFG_LIBEXECDIR = '/usr/lib/apache';


得到正確的 apxs ,就可以編譯 PHP 了。經過 make 和 make install ,並且重啟
Apache ,我們又得到了一個錯誤消息:

API module structure `php4_module' in file /usr/local/apache/libexec/libphp4.so 
is garbled - perhaps this is not an Apache module DSO?


不要擔心,我從來就沒有碰到過這樣的消息!因為我在開始新的編譯之前總是使用
make clean ; make distclean 來清除以前編譯留下的“垃圾”。

但是需要指出的是,筆者在升級 PHP 4.0.4pl1 過程中,碰到的問題是在編譯完畢,並
重新啟動 Apache 之碰到 “undefined symbol:uncompressed” 的報告。經過多次調
試發現是採用了 --with-mysql=/usr/local/mysql 的開關所致,來採用 MySQL 源代
碼版本,重新編譯 MySQL 以,再編譯 PHP ,就沒有這個問題了。所以,應該是 
MySQL 的庫沒有進入編譯路徑所致。

需要注意的是,編譯Apache 的時候,不要使用
 --activate-module=src/modules/php4/libphp4.a 參數,因為這樣的話,PHP4 就是
 以靜態方式來安裝了。

恭喜你,安裝成央A以 PHP 有新的補丁/版本出來,就不需要重新編譯 Apache 了。


(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★