Linux/PHPのインストール

PHPのソースコードからのインストール(2016-11-23)


はじめに

PHPの説明は省略します。
こちらも頻繁にアップデートされるので、更新するのは大変そうですね。

既存の php の確認

まず、入っているかどうかの確認から。 既存のバージョンで満足するならば、yum install でよろしいかと。

# yum info php

新たにソースからビルドしたい場合は、パッケージの方は一旦削りましょう*1。要るファイルがあれば先に退避すること。
(php.iniとか)

# yum remove php

srcのダウンロード

PHPのサイト で適当なURLを探してダウンロード。

ファイルを持ってくる所は省略します。ミラーサイトから取ってくることになるかと。

必要ならば、鍵の検証もやっておくこと

# vi ~/.gnupg/gpg.conf
  (で、keyserver-options auto-key-retrieve のコメントを外しておく)
# gpg --verify gpg --verify php-対象のバージョン.tar.gz.asc

あるいはハッシュ値でも可

# sha256sum php-対象のバージョン.tar.gz.asc
(ダウンロードページにある sha256 と値が等しい事)

後述の ./configure で libxml2 と xml2-config が無いと怒られます。*2
いっそ --disable-libxml する手もあるんですが、一応いれます。

# yum install libxml2-devel

ソースの make

そして、ほか特に問題なければ、ファイルを展開、makeまで行う。
デフォルトは /usr/local 配下にインストールされるので、オプションはお好みで。
(./configure --help の内容を参照。
 前回 ビルド済みなら、config.nice ファイルを参照)
私の場合は apache-httpd を使うので、そのオプションは必須で。*3
mbstring は、日本語が文字化けしないように。
DB関係(mysqlやpostgresql)は、まだ使わないので今回は--with-mysql とかの指定もありません。

make test をやるかは任意で。ただ、やっておけば今後なにか問題があった時に解決へのヒントになると思います。*4
ただし、やる場合はEnterは連打しない事! 最後にレポートを送るかどうか聞いてくるので。(デフォルトはYes。送らずにSaveする事もできます)

# tar zxvf php-対象のバージョン.tar.gz
# cd php-対象のバージョン/
# ./configure  \
          --with-apxs2=[apacheを入れたPATH]/bin/apxs  \
          --enable-mbstring
# make
# make test
# make install

設定

php.ini は、php.ini-development を所定の場所(--with-config-file-path)に cp します。
細かくは後日調整するとして、取り急ぎやっておくのは、
バージョンの隠蔽。外部の人にバージョン(と脆弱性)を見せたくないので。

expose_php = Off

前述の文字化け対策(mbstring)は、私の場合は php.ini は特に変更なしですが、
化けてしまう場合は、適宜変更していきましょう。

動作確認

設定が反映されている(configが読まれている)か、確認しておきましょう。

# php -i

これで問題なければ、とりあえずは OK。

apache-httpd の設定追加

私の場合はそもそも httpd で必要だから php を入れましたので。
httpd.conf で以下のような内容の記述があることを確認でしょうか。

LoadModule php7_module        modules/libphp7.so # make 時に自動で入るかも?
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

*1 私の初期環境にはたまたま入っていなかったから良かった?ですが、依存するパッケージが多いので、もしかしたら結構大変かもしれません。
*2 存在するのにエラーになる場合は、--with-libxml-dirでPATHを指定します。インストール直後にエラーなら、ldconfig を実行してキャッシュしなおす。あるいはldconfigの検索PATHに入っていなければ /etc/ld.so.conf などを確認・追記しましょう。
*3 と、INSTALLテキスト読んで気が付きました。INSTALLやらREADMEやら、英語苦手なんですよね・・・
*4 テスト項目が多いのは非常に有難い話ですが、凄いな。どういう経緯で一万項目まで増えちゃったんだろう?