こんにちは。
BitByteの伊井です。
今日は、CentOS8上で、PHP8をソースからビルドして
インストールする方法をご紹介します。
まず、CentOS8環境を、Vagrantでも、普通にクラウドでも良いので、
用意します。
そして、おもむろに以下のコマンドを実行していきます。
dnf install update
dnf install git sqlite
dnf groupinstall "Development Tools"
groupinstall〜〜で、PHPビルドに必要なライブラリを、
まとめてCentOS上にインストールしてくれます。
次に、PHP8のソースを取ってきましょう。
cd ~
git clone https://github.com/php/php-src.git
cd php-src
その後、以下のコマンドを実行します。
./buildconf
そして、configureコマンドを実行します。
./configure --prefix=/opt/php/php8 --enable-opcache --with-zlib
--enable-zip --enable-json --enable-sockets --without-pear
この際に、ライブラリが足りなかったりすると、そこで止まって、
失敗してしまいます。
手順で必要なライブラリのインストールコマンドは冒頭で記載しましたが、
sqliteなどでエラーが出る可能性があります。何とか成功させてください。
configureコマンドに成功すると、以下のような表示がされ、正常終了します。
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
次に、CentOS環境で有効なCPUのコア数を表示します。
nproc
nprocで表示された数値を、-jオプションに付けて、makeコマンドを
実行します。ここでは、コア数1を想定します。
make -j1
ビルドが完了すると、以下のような表示がされて、正常終了します。
Build complete.
Don't forget to run 'make test'.
次に、
make test
を実行します。
もしかすると、errorコード1などとなり、英語で何かしらの問題が
あるかもしれませんなどと、表示されるかもしれませんが、あくまで
開発バージョンですので、無視して完了しましょう。
最後に、インストールを行います。
make install
バージョンを確認しましょう。
/opt/php/php8/bin/php -v
PHP 8.0.0-dev (cli) (built: Apr 5 2019 11:19:45) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
It starts to get interesting.
PHP8がインストールされています。
インストール時には、OPcacheは、無効となっています。
/opt/php/php8/libに、iniファイルを作成して、1行追加します。
cd /opt/php/php8/lib
touch php.ini
zend_extension=opcache.so
PHP8では、JITの効果が先立って、体験できます。
ここでは、割愛しますが、プログラムをネイティブコードに変換し、
それをキャッシュして再利用するというプログラム実行が高速化される機能となっています。
JITを有効にするには、以下のようなコマンドで実行する必要があります。
/opt/php/php8/bin/php -d opcache.enable_cli=1 (オプション)PHPファイルパス
このあたりは、ネットに転がっていると思いますので、時間があればJITに関しても、色々と
研究してみてください。
それでは、長文失礼しました。