はじめに
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