そう叫びたかったけど、男には戦わなければいけない時もある。








環境

  • CentOS 7.2 (kernel 3.10.0-327.4.5.el7.x86_64)
  • apache 2.4.6
  • mysql 5.6.29
  • php 5.2.17

とりあえずやってみる

で、出たエラーがこれ。

ググったら同じようなことしている人がいて、頼むからそんな古いもの使わないでくれ!的なこと言われてた。(わかる)
https://www.centos.org/forums/viewtopic.php?f=47&t=53046


でも最後になにやらパッチがあったので当ててみた。



んで再コンパイルしてみたら解決したみたいで、別のエラーが。。。



グーグル先生に聞いたところ、こちらのサイトがヒット。 http://zgadzaj.com/how-to-install-php-53-and-52-together-on-ubuntu-1204



その中にこう書かれてあって、

EXT/GMP/GMP.C: IN FUNCTION ‘ZIF_GMP_RANDOM’:
EXT/GMP/GMP.C:1399:69: ERROR: ‘__GMP_BITS_PER_MP_LIMB’ UNDECLARED (FIRST USE IN THIS FUNCTION)
EXT/GMP/GMP.C:1399:69: NOTE: EACH UNDECLARED IDENTIFIER IS REPORTED ONLY ONCE FOR EACH FUNCTION IT APPEARS IN

This time it's PHP bug #50990. In one of comments there susan dot smith dot dev at gmail dot com suggested solution which works and does its magic:

I solved replacing the outdated __GMP_BITS_PER_MP_LIMB defined constant with GMP_LIMB_BITS. The latter is present in all previous versions, and MPIR define it too.

You have to edit file ext/gmp/gmp.c and replace one occurence of __GMP_BITS_PER_MP_LIMB with GMP_LIMB_BITS, in my case it was in line 1399.

ext/gmp/gmp.c このファイルの1399行目の __GMP_BITS_PER_MP_LIMBGMP_LIMB_BITS に書き換えろってあった。
書き換えて再度コンパイルしたら無事成功!
あとは普通に make install して完了 :)


と思ったらphpがapache module方式で動かなかった

# apachectl -t
httpd: Syntax error on line 55 of /etc/httpd/conf/httpd.conf: Cannot load /usr/lib64/httpd/modules/libphp5.so into server: /usr/lib64/httpd/modules/libphp5.so: undefined symbol: unixd_config

グーグル先生は頼りになります。

http://d.hatena.ne.jp/rougeref/20120907

なにやらapache2.4とphp5.2の組み合わせでだけ発生するエラーらしい。
言う通りに修正。

再度コンパイルして今度こそ完了!!!

# apachectl -t
Syntax OK

まとめ

  • ちゃんと新しいものを使え