PHPのコンパイルってどうやるの?
PHPをいれる際にどういれいているか?
いろいろなやり方がある現在ですが、いろいろな手段をしっていると幅がひろがっていいと思います。
PHPのコンパイルを初めて試したとき、yumの利用しやすさを実感したが、試してみたおかげで現在のプロジェクトで活かせています。
一度はやってみると、PHP以外のコンパイルでも活かせるため知識としては便利です。
ちなみに個人的な環境か以下の環境
- CentOS7 ( Linux )
- PHP7.1
PHPコンパイル
PHP公式ページ PHP: PHP を手に入れるには - Manual
PHP公式ページ ソースページ PHP: Downloads
とりあえずコンパイルでインストールまでの簡単なコマンドの流れを記載してみます。 実行はスーパーユーザーで実行しています。
cd /usr/local/src wget http://jp2.php.net/get/php-7.1.9.tar.gz/from/this/mirror -O php-src.tar.gz tar xzf php-src.tar.gz cd php-src ./configure make make install
PHP7.1.9のインストールを行っています。
.configureにオプションをつけていないため機能的には制限がありすぎるかと。
configure
PHP: 中心となる configure オプションのリスト - Manual
ソースからインストールする利点は必要な機能のみに絞れることなので、configureは重要なコマンドになってきます。
configureオプションで必要な機能を指定したり、コンパイル時のリンクの位置を指定していけます。
phpbrewでいれた個人環境のconfigure
./configure --prefix=/usr/local/Cellar/php70/7.0.17_9 --localstatedir=/usr/local/var --sysconfdir=/usr/local/etc/php/7.0 --with-config-file-path=/usr/local/etc/php/7.0 --with-config-file-scan-dir=/usr/local/etc/php/7.0/conf.d --mandir=/usr/local/Cellar/php70/7.0.17_9/share/man --enable-bcmath --enable-calendar --enable-dba --enable-exif --enable-ftp --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-zip --with-freetype-dir=/usr/local/opt/freetype --with-gd --with-gettext=/usr/local/opt/gettext --with-iconv-dir=/usr --with-icu-dir=/usr/local/opt/icu4c --with-jpeg-dir=/usr/local/opt/jpeg --with-kerberos=/usr --with-mhash --with-ndbm=/usr --with-png-dir=/usr/local/opt/libpng --with-xmlrpc --with-zlib=/usr --with-readline=/usr/local/opt/readline --without-gmp --without-snmp --with-libxml-dir=/usr/local/opt/libxml2 --with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc --with-unixODBC=/usr/local/opt/unixodbc --with-bz2=/usr --with-openssl=/usr/local/opt/openssl --enable-fpm --with-fpm-user=_www --with-fpm-group=_www --with-curl --with-xsl=/usr --with-ldap --with-ldap-sasl=/usr --with-mysql-sock=/tmp/mysql.sock --with-mysqli=mysqlnd --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --disable-opcache --enable-pcntl --without-pear --enable-dtrace --disable-phpdbg --enable-zend-signals
長い!!まぁ、機能をしぼってやればもっと短いので、自分のほしいものだけにしぼってコマンドオプションを指定してください。
make
コンパイルです。
makeでエラーが出る場合は、必要なライブラリなどをyumでインストールする必要があるため、エラーがでた場合は内容をしっかり確認しましょう。
エラー文でググれば必要なライブラリが大体出てきます。
コンパイルはかなりCPUを使用するため、AWSなどのクラウド環境でやる場合はいいインスタンスに変えてから実行することをおすすめします。
make install
makeしただけでは、コンパイルが完了しただけでサーバー環境へ反映したわけではありません。
「make install」したタイミングでビルドしたプログラムをインストールしている状態になります。
ここまで行えばインストールしたと判断して問題ないでしょう。
コンパイルできると色々便利
サーバー環境に必要なライブラリがない。パッケージソフトで提供されていない。場合とかは自分でコンパイルして利用することが可能です。
PHP7に変更して壁にぶち当たったため、ちょっと書いてみたい記事でした。
たぶん調べるともっといい記事はいっぱいありますので、いろいろ見てもらったほうが知見が広がると思います。