CentOS 7 PHP 7.2.5のソースファイルからのインストール

# 動作確認環境
事情によりバージョンをダウングレードしました。新しいバージョンでも動作するはずです。

- 仮想環境 VMware Workstation Player 12.5.9
- OS Windows 10 Pro 64bit

# 仮想環境
- OS CentOS 7.4 (1708) minimalインストール
- メモリ 2GB
- HDD 250GB

# 前提条件
- gcc 8.1.0
- cmake 3.11.4
- MySQL 5.7.22
- OpenSSL 1.1.0.h
- Apache 2.4.33

# 依存するパッケージをインストール
yumでパッケージをインストールすると2つのパッケージが「利用できません」と表示されるので、事前にインストールする。

````エラー内容
パッケージ libmcrypt-devel は利用できません。
パッケージ libtidy-devel は利用できません。
````
2つのパッケージは通常の`yum`のインストールではできないので`epel-release`を利用する。`epel-release`をインストールしてから、それぞれのパッケージをインストールする。

````
yum -y install epel-release
yum -y --enablerepo=epel install libmcrypt-devel
yum -y --enablerepo=epel install libtidy-devel
````
PHPで必要なパッケージをインストールする。

````
yum -y install libxml2-devel openssl-devel freetype-devel libcurl-devel net-snmp-devel libpng-devel libjpeg-turbo-devel openldap-devel readline-devel gd-devel bzip2-devel libicu-devel libwebp-devel gmp-devel libxslt-devel
````
# ダウンロード・展開
最新バージョンの確認
[PHP: Downloads](http://php.net/downloads.php)

`/usr/local/src`ディレクトリを移動する。

````
cd /usr/local/src
````
ソースファイルをダウンロードする。

````
wget http://jp2.php.net/get/php-7.2.6.tar.gz/from/this/mirror
````
ファイル名が`mirror`になっているので、変更する。

````
mv mirror php-7.2.6.tar.gz
````
ダウンロードしたファイルを展開する。

````
tar zxvf php-7.2.6.tar.gz
````
# コンパイル・インストール
展開したディレクトリに移動します。

````
cd php-7.2.6
````

コンパイル・インストール

````
./buildconf --force
./configure --with-libdir=lib64 --with-pic --with-bz2 --with-freetype-dir --with-png-dir --with-xpm-dir --with-gettext --with-gmp --with-iconv --with-jpeg-dir --with-curl --with-webp-dir --with-png-dir --with-openssl --with-pcre-regex --with-zlib --with-layout=GNU --enable-exif --enable-ftp --enable-sockets --with-kerberos --enable-shmop --enable-calendar --with-libxml-dir --with-mhash --with-ldap --with-readline --with-snmp --with-tidy --with-xsl --with-gnu-ld --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --enable-mbstring --with-gd --with-apxs2=/usr/local/apache2/bin/apxs
make
make install
````
# エラー対策
`./configure`にて以下の内容のエラーで停止した場合。

````
configure: error: Cannot find libtidy
````

`libtidy`関連のパッケージをインストールする。

````
yum -y install libtidy libtidy-devel
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/l/libwebp-0.4.3-3.el6.x86_64.rpm
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/l/libwebp-devel-0.4.3-3.el6.x86_64.rpm
````
この後、`./configure`が実行できる。

# 設定
## 初期設定
設定ファイル`php.ini`をソースファイルからコピーする。

````
cp php.ini-development /usr/local/etc/php.ini
````

エラーログの出力先を作成、オーナーの変更、パーミッションを変更する。

````
mkdir /var/log/php
chown daemon /var/log/php
chmod 755 /var/log/php
````

## php.iniの設定
`php.ini`を編集する。

````
vi /usr/local/etc/php.ini
````
変更内容

````php.ini
error_log = "/var/log/php/php_errors.log"

expose_php = Off
 
date.timezone = 'Asia/Tokyo'
 
post_max_size = 100M

upload_max_filesize = 100M
````
## Apacheの設定
httpd.confを編集する。

````
vi /usr/local/apache2/conf/httpd.conf
````

`libphp7.so`が記入されていることを確認する。

````httpd.conf
LoadModule php7_module        modules/libphp7.so
````
以下の項目を`LoadModule`の下に追記する。（場所の指定はありませんが、わかりやすくするため）

````httpd.conf
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
````

以上で、apacheを再起動しエラーが表示されず、apacheで設定したhtml及びphpの初期ディレクトリ（標準では`/usr/local/apache2/htdocs`）にindex.phpを作成phpinfo()コマンドを保存し、ブラウザでPHPの設定内容が表示されればWebサーバ、PHP共に起動が成功です。
この状態ではHTTP2及びHTTPS(SSL)にはなっていません。

````index.php
<?php
    phpinfo();
?>
````
# 参考
[CentOS7.1 64bitのyumリポジトリにEPELを追加 | kakiro-web カキローウェブ](http://www.kakiro-web.com/linux/epel-install.html)
[PHP compile errors – CentOS WebPanel Wiki](http://wiki.centos-webpanel.com/php-compile-errors)

---
[目次](https://qiita.com/knutpb1205/items/3ece0cab588afdb13f02)