今更なんだけど、PHP4.3.3を入れなければならない状況になってしまったので、CentOS5.4に入れました。
違うバージョンも使えるように、CGI版として動作させる。
とりあえず.configureをする
1
2
3
4
|
./configure --prefix=/usr/local/php4.3.3 --with-config-file-path=/usr/local/php4.3.3 --enable-force-cgi-redirect
--with-config-file-path=/usr/local/php-4.3.3 --program-suffix=4_3_3 --enable-mbstring --enable-soap
--enable-zend-multibyte --with-mysql --with-pgsql --with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib
--with-zlib --with-mcrypt --with-openssl --with-imagick
|
で、makeする
1
2
3
4
5
6
7
8
9
|
# make
/usr/local/src/php-4.3.3/sapi/cgi/cgi_main.c:120: error: static declaration of ‘optarg’ follows non-static declaration
/usr/include/getopt.h:59: error: previous declaration of ‘optarg’ was here
/usr/local/src/php-4.3.3/sapi/cgi/cgi_main.c:121: error: static declaration of ‘optind’ follows non-static declaration
/usr/include/getopt.h:73: error: previous declaration of ‘optind’ was here
/usr/local/src/php-4.3.3/sapi/cgi/cgi_main.c: In function ‘main’:
/usr/local/src/php-4.3.3/sapi/cgi/cgi_main.c:1048: 警告: passing argument 2 of ‘cfg_get_long’ from incompatible pointer type
make: *** [sapi/cgi/cgi_main.lo] エラー 1
|
すると上記のようにエラーがでてとまってしまう。
よくわからないけど、たぶん原因はここでいっているとおり「GCC-4.0になってから、グローバルシンボルと同じ名前のstaticシンボルを使うとエラーにするようになったっぽい」ところだと思う。
ためしにgccのバージョンを確認する
1
2
|
スレッドモデル: posix
gcc バージョン 4.1.2 20080704 (Red Hat 4.1.2-46)
|
しかたないので、変数名を置換して保存する、そしてもう一度make
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# vim /usr/local/src/php-4.3.3/sapi/cgi/cgi_main.c
:%s/optarg/optarg_custom/gc
:%s/optind/optind_custom/gc
:qw
# make clean
# make
/usr/local/src/php-4.3.3/sapi/cli/php_cli.c:94: error: static declaration of ‘optarg’ follows non-static declaration
/usr/include/getopt.h:59: error: previous declaration of ‘optarg’ was here
/usr/local/src/php-4.3.3/sapi/cli/php_cli.c:95: error: static declaration of ‘optind’ follows non-static declaration
/usr/include/getopt.h:73: error: previous declaration of ‘optind’ was here
|
すると今度はphp_cli.cでも同じエラーが発生
先ほどと同じように変数名を置換
1
2
3
4
5
6
7
8
|
# vim /usr/local/src/php-4.3.3/sapi/cli/php_cli.c
:%s/optarg/optarg_custom/gc
:%s/optind/optind_custom/gc
:qw
# make clean
# make
|
こんどはmakeが通った。
ということでmake installする
1
2
3
4
5
|
# make install
...
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).
|
ちゃんとコンパイルできたっぽい。まだ動かしてみてないからわからんけど。。
とりあえず、こんな感じでいいんじゃないでしょうか?
間違ってたら突っ込みいれてください。
続く