今日は前回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
このようになれば無事接続成功です!

コメント