php4.4.9とapache2.4.3でap_get_server_version()がないとか
もうね。いまどきphp4って。でも仕方ないんですよ(泣)。とりあえずコンパイル、リンクはできる。phpモジュールを組み込んで、起動すると9月7日のエントリと同じ現象。
はいはい、とソースを修正して再度コンパイル、リンク。もう一度起動してみるとこんどは違うシンボルが見えないと言ってくる。
httpd: Syntax error on line 146 of /usr/local/apache2/conf/httpd.conf: Cannot load modules/libphp5.so into server: /usr/local/apache2/modules/libphp4.so: undefined symbol: ap_get_server_version
面倒な。
早速古いapacheのソースを探ってみる。このphp4.4.9がいま動作しているapache2.2.19だ。server/core.cに定義を発見。
/* ap_get_server_version() is deprecated. ap_get_server_banner() * provides the same semantics. */ AP_DECLARE(const char *) ap_get_server_version(void) { return ap_get_server_banner(); }
なんだ、ap_get_server_banner()を読んでるだけじゃないか。そりゃ削除されるわけだ。
ということでphp4.4.9側でap_get_server_version()を使っているところをap_get_server_banner()へ置き換えてOK。
該当箇所は
./sapi/apache/php_apache.c:162: char *apv = (char *) ap_get_server_version(); ./sapi/apache/php_apache.c:484: char *apv = (char *) ap_get_server_version(); ./sapi/apache2handler/php_functions.c:327: return (char *) ap_get_server_version();
この三箇所。