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 就是以靜態方式來安裝了。
恭喜你,安裝成功,以后 PHP 有新的補丁/版本出來,就不需要重新編譯 Apache 了。
新聞熱點
疑難解答