PHP 7.2.1 導入


はじめに

WordPress を Apache 2.4 + MySQL 5.7 + PHP7 の環境で構築。今回はPHPの内容になります。

 

対象バージョン

バージョン
PHP 7.2.1

最新バージョンは公式HPで確認してください。

 

サーバ環境(ConoHa VPS)

バージョン 参照
CentOS 7 7.4.1708
OpenSSL 1.1.0g OpenSSL 1.1.0 導入
Apache 2.4.29 Apache 2.4.29 導入
MySQL 5.7.21 MySQL 5.7.21 導入

 

 

インストール

事前に必要なライブラリインストール

# yum install freetype-devel libjpeg-devel libpng-devel libxml2-devel libcurl-devel libicu-devel

 

libzip-develインストール

標準リポジトリだとバージョンが低くエラーがでるため、remiリポジトリからインストールする必要があります。まずepelリポジトリインストールします。

# yum install epel-release

# vim /etc/yum.repos.d/epel.repo
#enabled=1
enabled=0

remiリポジトリインストール

# wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# rpm -Uvh remi-release-7.rpm

libzip5-develをインストールします。

# yum --enablerepo=remi,remi-php72 install libzip5-devel

確認

# rpm -qa | grep libzip
libzip5-devel-1.4.0-2.el7.remi.x86_64
libzip5-1.4.0-2.el7.remi.x86_64

 

PHP7.2ダウンロードと展開

# cd /usr/local/src/
# wget http://jp2.php.net/get/php-7.2.1.tar.gz/from/this/mirror
# tar zxvf mirror

 

ビルド・インストール

# cd php-7.2.1/

# ./configure \
--prefix=/usr/local/php-7.2.1 \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--with-gettext \
--enable-intl \
--enable-sockets \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-curl \
--with-libzip \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-openssl=/usr/local/openssl \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysql-sock=/usr/local/mysql/mysql.sock

# make

# make install

 

シンボリックリンク作成

# ln -s /usr/local/php-7.2.1 php

# ls -l
total 8
drwxr-xr-x. 2 root root 78 Jan 18 11:26 bin
drwxr-xr-x. 2 root root 6 Nov 6 2016 etc
drwxr-xr-x. 2 root root 6 Nov 6 2016 games
lrwxrwxrwx 1 root root 23 Jan 23 09:27 httpd -> /usr/local/httpd-2.4.29
drwxr-xr-x 15 root root 175 Jan 18 17:07 httpd-2.4.29
drwxr-xr-x. 4 root root 35 Jan 18 11:26 include
drwxr-xr-x. 3 root root 4096 Jan 18 11:26 lib
drwxr-xr-x. 2 root root 6 Nov 6 2016 lib64
drwxr-xr-x. 2 root root 6 Nov 6 2016 libexec
lrwxrwxrwx 1 root root 23 Jan 27 13:54 mysql -> /usr/local/mysql-5.7.21
drwxr-xr-x 13 mysql mysql 264 Jan 27 15:25 mysql-5.7.21
lrwxrwxrwx 1 root root 25 Jan 17 09:23 openssl -> /usr/local/openssl-1.1.0g
drwxr-xr-x 7 root root 67 Jan 17 09:20 openssl-1.1.0g
lrwxrwxrwx 1 root root 20 Jan 30 16:51 php -> /usr/local/php-7.2.1
drwxr-xr-x 8 root root 76 Jan 30 16:38 php-7.2.1
drwxr-xr-x. 2 root root 6 Nov 6 2016 sbin
drwxr-xr-x. 7 root root 75 Jan 18 11:15 share
drwxr-xr-x. 8 root root 4096 Jan 30 16:33 src

 

パスを通す

# vi /etc/profile

export PATH=/usr/local/php/bin:$PATH

# (即時反映)
. /etc/profile

 

PHPのバージョン確認

# php -v
PHP 7.2.1 (cli) (built: Jan 30 2018 16:23:51) ( ZTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

 

設定ファイルのコピー

# cp /usr/local/src/php-7.2.1/php.ini-production /usr/local/php/lib/php.ini

 

php.iniの認識確認

# php --ini
Configuration File (php.ini) Path: /usr/local/php-7.2.1/lib
Loaded Configuration File: /usr/local/php-7.2.1/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)

 

PHPのモジュール確認

# php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
fileinfo
filter
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

 

PHP設定変更

# vim /usr/local/php/lib/php.ini

#タイムゾーンを有効
;date.timezone =
↓
date.timezone = Asia/Tokyo

#HTTPヘッダのPHPのバージョン非表示
expose_php = On
↓
expose_php = Off

メモリ制限をなくす(環境に応じて調整)
#memory_limit = 128M
memory_limit = -1

 

Apacheに設定追加

# vim /usr/local/httpd/conf/httpd.conf

(確認)
LoadModule php7_module modules/libphp7.so

(追加)
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

(確認)
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

 

libphp7.soの確認

# file /usr/local/httpd/modules/libphp7.so
/usr/local/httpd/modules/libphp7.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=************, not stripped

 

Apacheでモジュールが認識できているか確認

# apachectl -M | grep php
 php7_module (shared)

 

phpinfoで確認

# echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

 

Apache再起動

# systemctl reload httpd.service

 

ブラウザで確認

http://<Server IP>/phpinfo.php
https://<Server IP>/phpinfo.php

 

確認が終わったらphpinfo.phpは削除しておく

# rm -f /var/www/html/phpinfo.php

 

参考

https://qiita.com/shadowhat/items/a9ec289b44af9a8e8ad3
https://qiita.com/m3m0r7/items/f1342bca10040cdff3ab
https://teratail.com/questions/85617