php7.2のインストール
OSとApacheのバージョン確認
CentOS7のバージョン
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
Apacheのバージョン
# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 5 2018 01:47:09
phpの旧バージョンの有無を確認
php7.2をインストールする前に、phpがインストールされていないことを確認します。以下のコマンドでphpがインストールされていないことを確認します。
# yum list installed | grep php
#
何も表示されなければ、完了です。もし出力結果にphpが含まれている場合は、phpを削除します。
# yum remove php*
remiリポジトリのインストール
CentOS7のデフォルトではphp7.2系に関するパッケージを探してみても見つかりません。これはOSのベースに用意されているレポジトリにはphpの7.2系は含まれていないためです。
remiレポジトリはEPELの補完的な外部リポジトリです。有志によって管理されています。
remi公式サイトのリンクにあるRedhat enterprise linux 7用のremiを利用します。
ではremiリポジトリをインストールします。
# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
EPELレポジトリがインストールされていなくても、yumコマンドの依存関係でremiレポジトリをインストールする際にEPELレポジトリもインストールされます。
レポジトリファイルは/etc/yum.repos.d/以下にありますので、確認してみます。
# cd /etc/yum.repos.d/
-rw-r--r--. 1 root root 1664 11月 23 22:16 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 11月 23 22:16 CentOS-CR.repo
-rw-r--r--. 1 root root 649 11月 23 22:16 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 630 11月 23 22:16 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 11月 23 22:16 CentOS-Sources.repo
-rw-r--r--. 1 root root 5701 11月 23 22:16 CentOS-Vault.repo
-rw-r--r--. 1 root root 314 11月 23 22:16 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 1050 10月 3 2017 epel-testing.repo
-rw-r--r--. 1 root root 951 10月 3 2017 epel.repo
-rw-r--r--. 1 root root 446 3月 8 16:34 remi-glpi91.repo
-rw-r--r--. 1 root root 446 3月 8 16:34 remi-glpi92.repo
-rw-r--r--. 1 root root 446 3月 8 16:34 remi-glpi93.repo
-rw-r--r--. 1 root root 446 3月 8 16:34 remi-glpi94.repo
-rw-r--r--. 1 root root 855 3月 8 16:34 remi-modular.repo
-rw-r--r--. 1 root root 456 3月 8 16:34 remi-php54.repo
-rw-r--r--. 1 root root 1314 3月 8 16:34 remi-php70.repo
-rw-r--r--. 1 root root 1314 3月 8 16:34 remi-php71.repo
-rw-r--r--. 1 root root 1314 3月 8 16:34 remi-php72.repo
-rw-r--r--. 1 root root 1314 3月 8 16:34 remi-php73.repo
-rw-r--r--. 1 root root 750 3月 8 16:34 remi-safe.repo
-rw-r--r--. 1 root root 2605 3月 8 16:34 remi.repo
remiレポジトリの確認
remiレポジトリでphp7.2関連の導入に利用するレポジトリはremi-php72レポジトリになります
# yum search --enablerepo=remi,remi-php72 php72
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp-srv2.kddilabs.jp
* epel: www.ftp.ne.jp
* extras: ftp-srv2.kddilabs.jp
* remi: ftp.riken.jp
* remi-php72: ftp.riken.jp
* remi-safe: ftp.riken.jp
* updates: ftp-srv2.kddilabs.jp
============================== N/S matched: php72 ==============================
php72-php-pecl-handlebars-devel.x86_64 : php72-php-pecl-handlebars developer
: files (header)
・・・・
php72-php-pecl-zip.x86_64 : Une extension de gestion des ZIP
php72-php-pecl-zmq.x86_64 : ZeroMQ messaging
php72-php-pggi.x86_64 : GTK bindings
php72-php-pgsql.x86_64 : A PostgreSQL database module for PHP
php72-php-phalcon3.x86_64 : Phalcon Framework
php72-php-phpiredis.x86_64 : Client extension for Redis
php72-php-pinba.x86_64 : Client extension for Pinba statistics server
php72-php-process.x86_64 : Modules for PHP script using system process
: interfaces
php72-php-pspell.x86_64 : A module for PHP applications for using pspell
: interfaces
php72-php-recode.x86_64 : A module for PHP applications for using the recode
: library
php72-php-smbclient.x86_64 : PHP wrapper for libsmbclient
php72-php-snappy.x86_64 : Snappy Extension for PHP
php72-php-snmp.x86_64 : A module for PHP applications that query SNMP-managed
: devices
php72-php-snuffleupagus.x86_64 : Security module for php7
php72-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php72-php-sodium.x86_64 : Wrapper for the Sodium cryptographic library
php72-php-sqlsrv.x86_64 : Microsoft Drivers for PHP for SQL Server
php72-php-tarantool.x86_64 : PHP driver for Tarantool/Box
php72-php-tidy.x86_64 : Standard PHP module provides tidy library support
php72-php-twig.noarch : The flexible, fast, and secure template engine for PHP
php72-php-wkhtmltox.x86_64 : HTML Converter
php72-php-xml.x86_64 : A module for PHP applications which use XML
php72-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC
: protocol
php72-php-zephir-parser.x86_64 : Zephir parser extension
php72-php-zstd.x86_64 : Zstd Extension for PHP
php72-unit-php.x86_64 : PHP module for NGINX Unit
php72-uwsgi-plugin-php.x86_64 : uWSGI - Plugin for PHP support
php72-zephir.noarch : Zephir language for creation of extensions for PHP.
php72-zephir-parser.x86_64 : Zephir parser extension
Name and summary matches only, use "search all" for everything.
phpパッケージのインストール
まず、パッケージの詳細を確認後、インストールします
パッケージの確認 # yum info --enablerepo=remi,remi-php72 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql パッケージのインストール # yum -y install --enablerepo=remi,remi-php72 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql
エラーが出ないで、”完了しました!”と表示されれば、phpは正常にインストールされています。
インストールされたphpの確認
# yum list installed | grep php
php.x86_64 7.2.17-1.el7.remi @remi-php72
php-cli.x86_64 7.2.17-1.el7.remi @remi-php72
php-common.x86_64 7.2.17-1.el7.remi @remi-php72
php-gd.x86_64 7.2.17-1.el7.remi @remi-php72
php-json.x86_64 7.2.17-1.el7.remi @remi-php72
php-mbstring.x86_64 7.2.17-1.el7.remi @remi-php72
php-mysqlnd.x86_64 7.2.17-1.el7.remi @remi-php72
php-pdo.x86_64 7.2.17-1.el7.remi @remi-php72
php-pecl-mcrypt.x86_64 1.0.2-2.el7.remi.7.2 @remi-php72
php-pecl-mysql.x86_64 1.0.0-0.17.20160812git230a828.el7.remi.7.2
@remi-php72
php-xml.x86_64 7.2.17-1.el7.remi @remi-php72
php-xmlrpc.x86_64 7.2.17-1.el7.remi @remi-php72
phpの基本設定
# vi /etc/php.ini
376行目(バージョンを出力しない:セキュリティ対策)
expose_php = On を Off に変更
674行目(アップロードサイズの変更1)
post_max_size = 2M を 20M に変更
827行目(アップロードサイズの変更2)
upload_max_filesize = 2M を 20M に変更
904行目(タイムゾーンの設定)
date.timezone = "Asia/Tokyo" Asia/Tokyo を追加
1529行目行頭の ; を削除(日本語対応)
mbstring.language = Japanese
1536行目で UTF-8 を追加(文字エンコード)
mbstring.internal_encoding = UTF-8
1544行目で UTF-8 を追加(http通信時の文字エンコード)
mbstring.http_input = UTF-8
1554行目で pass を追加(http通信のエンコード変換を行わない)
mbstring.http_output = pass
1562行目行頭の ; を削除し、Off を On に変更(http入力変換を有効にする)
mbstring.encoding_translation = On
1567行目行頭の ; を削除(文字コードの自動変換を自動にする)
mbstring.detect_order = auto
1572行目行頭の ; を削除(変換出来ない文字は出力しない)
mbstring.substitute_character = none
以上で設定は完了したので、上書き保存します
phpの設定を反映する
Apacheを再起動してphpの設定を反映する
# systemctl restart httpd # systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since 日 2019-04-14 10:50:45 JST; 3h 1min ago Docs: man:httpd(8) man:apachectl(8) Process: 3298 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS) Main PID: 3124 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─3124 /usr/sbin/httpd -DFOREGROUND ├─3302 /usr/sbin/httpd -DFOREGROUND ├─3303 /usr/sbin/httpd -DFOREGROUND ├─3305 /usr/sbin/httpd -DFOREGROUND ├─3306 /usr/sbin/httpd -DFOREGROUND └─3307 /usr/sbin/httpd -DFOREGROUND 4月 14 10:50:42 localhost.localdomain systemd[1]: Starting The Apache HTTP ... 4月 14 10:50:45 localhost.localdomain systemd[1]: Started The Apache HTTP S... 4月 14 11:21:01 localhost.localdomain systemd[1]: Reloading The Apache HTTP... 4月 14 11:21:01 localhost.localdomain systemd[1]: Reloaded The Apache HTTP ... Hint: Some lines were ellipsized, use -l to show in full.
phpの動作確認
ドキュメントルートにファイルを置き、ブラウザで確認します
# cd /var/www/html # touch info.php # vi info.php <?php phpinfo(); ?>