CentOS 7にPHP7系をインストールする

PHP Linux

今日は前回webサーバーをセットアップしたマシンにPHP7系をインストールしてみます。

この記事の趣旨

自分が分からなかったこと・知らなかったことをググり倒した結果を備忘録として残すことが目的で、初学者の方に教え伝えるものではありません(きっぱり)。

誤認と思われる箇所は教えて頂ければうれしいです。

検証環境

VirtualBox上の仮想マシンCentOS 7.9.2009です。

[sandambara@srv236 ~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

リポジトリ追加

yum install php…とやるとPHP5系がインストールされてしまいます。

# sudo yum install phpの結果

====================================================================================================
 Package                  アーキテクチャー     バージョン                  リポジトリー        容量
====================================================================================================
インストール中:
 php                      x86_64               5.4.16-48.el7               base               1.4 M
依存性関連でのインストールをします:
 libzip                   x86_64               0.10.1-8.el7                base                48 k
 php-cli                  x86_64               5.4.16-48.el7               base               2.7 M
 php-common               x86_64               5.4.16-48.el7               base               565 k

トランザクションの要約
====================================================================================================

7系をインストールできるようにリポジトリを追加します。

[sandambara@srv236 ~]$ sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
読み込んだプラグイン:fastestmirror
remi-release-7.rpm                                                           |  23 kB  00:00:00     
/var/tmp/yum-root-ADUFWN/remi-release-7.rpm を調べています: remi-release-7.9-1.el7.remi.noarch
/var/tmp/yum-root-ADUFWN/remi-release-7.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ remi-release.noarch 0:7.9-1.el7.remi を インストール
--> 依存性の処理をしています: epel-release = 7 のパッケージ: remi-release-7.9-1.el7.remi.noarch
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: packet01.centos.org
 * updates: packet01.centos.org
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-11 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
 Package                アーキテクチャー バージョン                 リポジトリー               容量
====================================================================================================
インストール中:
 remi-release           noarch           7.9-1.el7.remi             /remi-release-7            31 k
依存性関連でのインストールをします:
 epel-release           noarch           7-11                       extras                     15 k

トランザクションの要約
====================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

合計容量: 45 k
総ダウンロード容量: 15 k
インストール容量: 55 k
Downloading packages:
epel-release-7-11.noarch.rpm                                                 |  15 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : epel-release-7-11.noarch                                            1/2 
  インストール中          : remi-release-7.9-1.el7.remi.noarch                                  2/2 
  検証中                  : epel-release-7-11.noarch                                            1/2 
  検証中                  : remi-release-7.9-1.el7.remi.noarch                                  2/2 

インストール:
  remi-release.noarch 0:7.9-1.el7.remi                                                              

依存性関連をインストールしました:
  epel-release.noarch 0:7-11                                                                        

完了しました!

PHP関係一式インストール

必要と思われるものを一式インストールします。セキュリティ的な考え方ではNG手法ですが、今回はテスト環境と言うことで(PHPの設定についても同様)・・・セーフラインは低めですw

[sandambara@srv236 ~]$ sudo yum -y install --enablerepo=remi,remi-php74 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql php-pgsql
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                         | 9.8 kB  00:00:00     
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: packet01.centos.org
 * remi: ftp.riken.jp
 * remi-php74: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * updates: packet01.centos.org

# 以下省略

以前こちらの記事でPostgreSQLのセットアップ方法を公開しており、このDBとアクセスすることを今回のゴールとします。

PHPの設定

マルチバイト対応のためiniファイルを修正します。

[sandambara@srv236 ~]$ sudo nano /etc/php.ini

ファイル内の行番号の出し方はこちらの記事で公開しています。

# 修正内容

1509行目

mbstring.language = Japanese

1516行目

mbstring.internal_encoding = UTF-8

1524行目

mbstring.http_input = UTF-8

1534行目

mbstring.http_output = pass

1542行目

mbstring.encoding_translation = On

1547行目

mbstring.detect_order = auto

1552行目

mbstring.substitute_character = none

PHPがApache(httpd)に組み込まれているか確認

[sandambara@srv236 ~]$ httpd -M | grep php

この実行結果が下記のようになっていればOKです。

php7_module (shared)

のっぺらぼう(何も結果が返ってこない)の場合は設定やインストール手順を再度見直してみましょう。

DBに接続してみる

/var/www/htmlにtest.phpを作成します。DBに接続するだけでデータの取得は行いませんので、database_nameはpostgresでOKです。ポート番号とuser_name、passwordはご自身が設定されたものやpg_hba.confの内容通りにしましょう。

[sandambara@srv236 html]$ sudo nano test.php

<?php
try{
    $db = new PDO('pgsql:dbname=database_name host=localhost port=5432','user_name','password');
    echo 'connected.';    
}catch(PDOException $e){
    echo 'failed.:'.$e->getMessage();
}finally{
    $db = null;
}
?>

Ctrl + x → y → Enterキーで保存して終了したら早速テストです。

[sandambara@srv236 html]$ php /var/www/html/test.php

このようになれば無事接続成功です!

コメント