カメノドットコム
Debian大好きでメインで節操ない感じ。
GMOもわりと好き。
RSS feedly

PHP7のダウンロードとインストール

長らくPHP5を使っていたのですが。
PHP5とPHP7で簡単なベンチ取ってみた をご覧ください。PHP7が爆速です。
使い慣れたPHP5と悩みましたが、ここはいっちょ、PHP7ということで。

---- [PR] ----
現在契約中 : GMOクラウドのVPS : お名前.com
今後契約するかも : お名前.com VPS
--------------

ソースのダウンロード

PHP: Downloads からダウンロードするんですが、ソースなのにブラウザベース。CUIで落とすのが面倒です。
日本のミラーは「http://jp2.php.net/distributions/」になりますので、ファイル名を追加して直接指名します。
「PHP 7.1.8」なら「http://jp2.php.net/distributions/php-7.1.8.tar.xz」てな具合です。
圧縮形式は「tar.gz」「tar.bz2」「tar.xz」と各種揃っているので、お好みでどうぞです。

さっそくダウンロードしますが、バージョンや圧縮形式は適宜読み替えてください。
適当な場所に適当なディレクトリを掘り、そこで作業しています。

$ mkdir php
$ cd php
$ wget http://jp2.php.net/distributions/php-7.2.4.tar.bz2

必要なソースは以上です。

php-fpmのユーザを確認する

Apache2.4のダウンロードとインストール で作成した Apache を動かすユーザとグループを確認します。
ユーザとグループ共に「apache」を作成しましたので、これを使用します。

PHP7のインストール

ゲットしたソースを解凍してコンパイルしてインストールします。
足りないパッケージを逐次追加したりオプション変更したりしてますが、環境によって必要なものは異なりますので参考程度に。
コンフィグオプションを複数行に分けてますが、本来は1行で入力するものらしいです。見やすさ優先。

$ tar jxfv php-7.2.4.tar.xz
$ cd php-7.2.4
$ ./configure --prefix=/usr/local/php7 \
--enable-opcache \
--enable-huge-code-pages \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-dba \
--enable-zip \
--enable-mbstring \
--enable-fpm \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-gettext \
--with-gd \
--with-mcrypt \
--with-mhash \
--with-openssl \
--with-bz2 \
--with-zlib \
--with-curl \
--with-fpm-user=apache --with-fpm-group=apache
configure: error: libxml2 not found. Please check your libxml2 installation.
$ sudo apt-get install libxml2-dev
$ ./configure --prefix=/usr/local/php7 --enable-opcache --enable-huge-code-pages --enable-bcmath --enable-calendar --enable-exif --enable-dba --enable-zip --enable-mbstring --enable-fpm --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gettext --with-gd --with-mcrypt --with-mhash --with-openssl --with-bz2 --with-zlib --with-curl --with-fpm-user=apache --with-fpm-group=apache
checking for pkg-config... no
configure: error: Cannot find OpenSSL's libraries
$ sudo apt-get install pkg-config
$ sudo ldconfig

$ ./configure --prefix=/usr/local/php7 --enable-opcache --enable-huge-code-pages --enable-bcmath --enable-calendar --enable-exif --enable-dba --enable-zip --enable-mbstring --enable-fpm --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gettext --with-gd --with-mcrypt --with-mhash --with-openssl --with-bz2 --with-zlib --with-curl --with-fpm-user=apache --with-fpm-group=apache
checking if the location of ZLIB install directory is defined... no
configure: error: Cannot find libz
$ sudo apt-get install libz-dev

$ ./configure --prefix=/usr/local/php7 --enable-opcache --enable-huge-code-pages --enable-bcmath --enable-calendar --enable-exif --enable-dba --enable-zip --enable-mbstring --enable-fpm --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gettext --with-gd --with-mcrypt --with-mhash --with-openssl --with-bz2 --with-zlib --with-curl --with-fpm-user=apache --with-fpm-group=apache
checking for BZip2 in default path... not found
configure: error: Please reinstall the BZip2 distribution
$ sudo apt-get install libbz2-dev

$ ./configure --prefix=/usr/local/php7 --enable-opcache --enable-huge-code-pages --enable-bcmath --enable-calendar --enable-exif --enable-dba --enable-zip --enable-mbstring --enable-fpm --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gettext --with-gd --with-mcrypt --with-mhash --with-openssl --with-bz2 --with-zlib --with-curl --with-fpm-user=apache --with-fpm-group=apache
checking for cURL 7.10.5 or greater... configure: error: cURL version 7.10.5 or later is required to compile php with cURL support
$ sudo apt-get install libcurl4-openssl-dev

$ ./configure --prefix=/usr/local/php7 --enable-opcache --enable-huge-code-pages --enable-bcmath --enable-calendar --enable-exif --enable-dba --enable-zip --enable-mbstring --enable-fpm --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gettext --with-gd --with-mcrypt --with-mhash --with-openssl --with-bz2 --with-zlib --with-curl --with-fpm-user=apache --with-fpm-group=apache
If configure fails try --with-webp-dir=<DIR>
If configure fails try --with-jpeg-dir=<DIR>
configure: error: png.h not found.
$ sudo apt-get install libpng-dev

$ ./configure --prefix=/usr/local/php7 --enable-opcache --enable-huge-code-pages --enable-bcmath --enable-calendar --enable-exif --enable-dba --enable-zip --enable-mbstring --enable-fpm --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gettext --with-gd --with-mcrypt --with-mhash --with-openssl --with-bz2 --with-zlib --with-curl --with-fpm-user=apache --with-fpm-group=apache
configure: WARNING: unrecognized options: --with-mcrypt

$ ./configure --prefix=/usr/local/php7 --enable-opcache --enable-huge-code-pages --enable-bcmath --enable-calendar --enable-exif --enable-dba --enable-zip --enable-mbstring --enable-fpm --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gettext --with-gd --with-mhash --with-openssl --with-bz2 --with-zlib --with-curl --with-fpm-user=apache --with-fpm-group=apache
Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| 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.

config.status: creating php7.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/fpm/php-fpm.conf
config.status: creating sapi/fpm/www.conf
config.status: creating sapi/fpm/init.d.php-fpm
config.status: creating sapi/fpm/php-fpm.service
config.status: creating sapi/fpm/php-fpm.8
config.status: creating sapi/fpm/status.html
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: main/php_config.h is unchanged
config.status: executing default commands

$ make

Build complete.
Don't forget to run 'make test'.

$ make test
$ sudo make install

make test をしなくてもインストールできますが、公開用サーバなのでちゃんとしておきましょう。
時間がかかりますが、いずれ終わります。
はい。終わりました。

Sponsored Link