gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

PHP7.4系のコンパイル

いやまぁ

sh ./configure -h

でチェックしろ、って話しではあるのですが。

PHP7.3系とPHP7.4系で、configure のオプションがちょいと変わっております。……ちょろっとべっくらこいたよおいちゃん。
おいちゃん、PHPは自力コンパイルする事が多くて、もうちょっと正確には
・周辺のライブラリは、差し障りがないかぎり yum*1で入れる:勿論、 -devel でね(はぁと)
PHP自体は、php.netのダウンロードのページからwgetしてきてコンパイル
って方法をとる事が多いです。

んで。まぁ

 --enable-pcntl \
 --enable-sysvsem \
 --enable-sysvshm \
 --enable-sysvmsg \

とかいう「普段書くコードの趣味丸わかり」なオプションはともかくとして。ちょいと引っかかった2つがあって、微妙に手間取ったので、備忘録兼ねて。

いち。
PHP7.4を入れる時に、どうも「oniguruma」「sqlite」が必須のようでございまっする。
なので、とりあえず

sudo yum install oniguruma-devel sqlite-devel 

で、コンパイル前にinstallしておきましょう。 -y オプションは、なんとなし、割と使わない事が多いです。いやまぁどうせYesと答えはするのですが、えぇ。

に。
ここがハマった。ちと案件でGDを使ってるのがあったのですが、PHP7.3までの

 --with-gd \
 --with-jpeg-dir=/usr/lib \
 --with-zlib-dir=/usr/lib \

が、通らない orz

調べたところ、上述は

 --enable-gd \
 --with-jpeg \
 --with-zlib \

に変わっている模様。
あと、地味にハマったのが
・一端「 --enable-gd」だけでコンパイルしたらjpegが有効になってない
・ので「--with-jpeg」を加えたらライブラリが足らん

sudo yum install libjpeg-devel

・で、「--with-jpeg」付けて再度コンパイルしたんだけど有効にならん orz

答えは簡単で「まず先に make clean してから」。
おそらく「一端gdのエクステンション自体はコンパイルされちゃった」から、そいつ消さないと有効にならない orz
コンパイル2回分くらいハマりました orz

なので、configureするまえに「make clean」するとよかとかと思われます。

なんか、英語でも「jpegが有効にならねぇ」的なのがちらほらと散見されたので、ナレッジ残しておくとよいかなぁ、とか思いつつ、めも。

*1:もうdnfのほうがよいんだろうなぁ……