【VirtualBox】開発環境を作る – PHP編 【CentOS】

web

こんにちは、なかだ(@newNakata)です。

また前回から恐ろしい時間が経ってしまいました。
過去の記事から、本稿では apache がパッケージインストールされている事を前提とします
その上でPHP7.4をパッケージインストールしていきます。

構成

  • Virtual Box 6.1.16
  • CentOS(Linux)
  • Apache(HTTPD)
  • MySQL(MariaDB)
  • PostgreSQL 
  • PHP ← 本稿はここ

PHPとは

サーバサイドスクリプト言語です。

「ん?」って思いますよね。僕もです。
PHPもオープンソースの汎用プログラミング言語で、サーバサイドで動的なWEBページを作成することができます。
WEBページにおいてHTMLを「静的コンテンツ」、PHPを「動的コンテンツ」と言ったりもります。
簡単に言うと、静的コンテンツは作成更新した状態の内容をそのまま表示する事はできますが、例えばコンテンツを閲覧した時間帯でその内容を変える事はできません。
PHPはプログラムによってコンテンツを閲覧した時間帯で、内容を変化・・・例えば11時に閲覧した場合は「後1時間でお昼休憩。もう一息頑張ろう!」とメッセージを出したりする事ができます。
HTMLと組み合わせて使用することもできますし、もちろんデータベースとの連携などもでき、とっつき易く習得が比較的簡単ともいわれています。

PHPについて

PHPのサポートは公式にありますが、以下の通りになっています。

BranchInitial ReleaseActive SupportSecurity Support
7.32018/12/62020/12/62021/12/6
7.42019/11/282021/11/282022/11/28
8.02020/11/262022/11/262023/11/26
8.12021/11/252023/11/252024/11/25

アクティブサポート(Active Support)
最初の安定板リリースから2年間は完全サポートされる。
セキュリティサポート(Security Support)
アクティブサポート後、重大セキュリティ問題についてのみ、更に1年間サポートされる。

見ての通り7.3は既にセキュリティサポートも終わっています。
何故書いたかと言うと、前回投稿後予定ではまだサポート内で当初はPHP7.3採用予定でした。

よって本稿ではまだかろうじてサポート内のPHP7.4を採用します。
バージョンアップなどのしがらみが無い場合はPHP8.1一択で良いと思います。

準備

インストール済phpがあれば削除

本ブログ通りの作成であればインストール済のphpは無いため不要です。
そうで無い場合は以下のコマンドで削除してください。

rpm -qa | grep php
yum remove -y php php-*

また上記以外(例えばphp72など)があれば -y 以降にパッケージ名を指定して一緒に削除してください。
上記 rpm コマンドを実行して何も表示されなくなれば全て削除完了です。

phpインストールの為のRemiリポジトリ追加

と言いつつ、何故リポジトリを追加する必要があるのか見てみましょう。
いつも通り yumコマンドでphpパッケージを検索してみます。

yum search php
yum info php

本ブログ通りである場合 search するとかなりの数のphp関連パッケージが表示されるかと思います。
これは前記事の「Postgresの開発パッケージの為のリポジトリ追加」で追加したレポジトリによるものです。
EPLE、SCLレポジトリが無い場合、ここまで多くのパッケージは表示されません。
php関連パッケージは沢山あるので、ひとまずphp本体のバージョンを調べてみましょう。

古過ぎない?
このままではphp7.4のパッケージインストールができないため、新たにRemi レポジトリを以下のコマンドで追加します。

yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

以下のような感じで完了します。

/etc/yum.repos.d/ 以下にファイルが追加されています。

これで準備は完了です。
本稿では remi-php74.repo を使用します。

パッケージインストール

Remiレポジトリ補足

cat コマンドで追加された remi-php74.repo を見てみると

enabled=0

になっているかと思います。
レポジトリファイル全般に言える事ですが、ここがゼロのものは無効を意味します。
有効(1)であれば yum コマンドを実行すると自動でレポジトリが読み込まれますが無効の場合はコマンドを入力する時に指定する必要があります。
本稿ではコマンド入力時に指定して必要なパッケージを全て入れます。

が、余談として、有効にする方法は以下の2つの方法があります。

直接1に書き換える
該当するレポジトリファイルを vi などで開きゼロを1に書き換える事で有効化させます。
yum-config-managerコマンドを使う
yum-utils パッケージに含まれるyum-config-manager コマンドを使うと、指定したレポジトリの enabled=1 になります。

yum install -y yum-utils
yum-config-manager --enable remi-php74
yum install -y php

yum-utils パッケージをインストール後、yum-config-manager コマンドで目的のファイルを指定します。
後は php と指定するだけでphp7.4がインストールされます。

インストールと実行確認

改めて、全て指定してインストールしていきます。

yum install -y --enablerepo=remi,remi-php74 php php-devel php-pdo php-mysqlnd php-pgsql php-mbstring  php-gd php-xml php-pecl-zip php-pecl-mcrypt php-intl composer

このコマンドの

--enablerepo=remi,remi-php74

この部分がレポジトリの指定です。

次に、php以降の関連モジュールなどは、DBを始めPHPの開発で入れておけば困らないだろうと思う完全な主観です。
最初から必要なモジュールなどがある場合は逐次追加してください。
沢山あるので簡単に解説します。

php
php(今回は7.4)本体です。
php-devel
php開発用にソースコンパイルなどする場合に必要ですが無くても構いません。
僕はいつも本体(今回の場合はphp)とそれに付随するdevelパッケージは一緒に入れる様にしています。
php-pdo
PHP Data Objectsの略で、phpからデータベースへ簡単にアクセスするための拡張モジュールです。
これがあるおかげでデータベースの種類やバージョンの違いを意識せずにコードが書けるようになります。
php-mysqlnd
MySQL Native Driverの略で、phpに特化したmysqlクライアントライブラリです。
簡単に言うと、phpでmysqlが使いたい場合に必要です。
php-pgsql
PHPのPostgreSQLモジュールです。
こちらもphpでpostgresが使いたい場合に必要です。
php-mbstring
PHPでマルチバイト文字(ひらがなや漢字など)を使用できるようにするPHPの拡張モジュールです。
php-gd
PHPで画像ファイルを扱うために必要なライブラリです。
これとは別にこの度はインストールしませんがImageMagickなどもあります。
php-xml
PHPでXMLを使いたい場合に必要なモジュールです。
php-pecl-zip
PHPでZipArchiveを使いたい場合に必要な拡張モジュールです。
php-pecl-mcrypt
PHPで暗号化を扱うために必要な拡張モジュールです。
php-intl
国際化用拡張モジュールです。
世界各国のロケール(国や地域によって変わる言語、日付、時刻、通貨単位などの設定情報)関連のさまざまな操作が行えるようになります。
composer
PHPのプロジェクトが必要とするライブラリやパッケージを管理するライブラリ依存管理ツールです。

長くなりましたが、コマンドを実行してみましょう。
以下の画像のような表示が出ると完了です。

ではパッケージがインストールされているか確認してみましょう。

rpm -qa | grep php

ちゃんとインストールされていますのでインストールはこれで完了です。
加え、パッケージインストールなので以下も追加されています。

  • /etc に php.iniファイル
  • /etc/httpd/conf.d に php.confファイル
  • /etc/httpd/modules libphp7.soファイル
  • /etc/httpd/modules libphp7-zts.soファイル

本稿では編集しませんが、iniファイルはphpの設定ファイルです。
最初に記載しましたが、本稿はapacheをパッケージインストールされている事が前提なので /etc に httpd が存在します。
php.conf は apache で php が使えるようにするための設定ファイル、libphp7.so はphpの実態と思って貰って大丈夫です。

次にphpコマンドを使って簡単な実行確認をします。

php -v

-v はバージョンを確認するオプションですが、上記のように表示されることで7.4.33がインストールされphpが実行できている事がわかります。

ブラウザでphpファイルを表示(php実行)

インストール直後のみapacheの再起動

php をインストールした直後は apache が php を認識してくれません。
その為、1度 apache を再起動します。

systemctl restart httpd.service

vm を一旦終了した場合、次回からは上記の作業は必要ありません。

phpinfo表示

インストールしたphp関連の設定をブラウザで表示させるphpファイルを作成します。
本ブログの通り(【VirtualBox】開発環境を作る – Apache設定編 【CentOS】 6 virtual host設定)であれば /var/www/nakadalog 以下に、そうでない場合は document root 設定のパス(初期設定では /var/www/html の下)にファイルを配置します。

今回は本ブログの通り /var/www/nakadalog の下に作成します。

cd /var/www/nakadalog
touch index.php
echo '<?php phpinfo();' > index.php

cd でディレクトリ移動。
touch で phpファイル(拡張子が .php)である index.php 作成。
echo でシングルクォート(’)で囲まれた文字列を index.php へ挿入。

用意ができたら早速ブラウザから確認してみましょう。
上記通り、本ブログの環境なので

http://nakadalog.local/index.php

になります。
以下が表示されれば正しく動作しています。

html の時は index.html が無くても良かったのに、php の時は必要なのか、と言うとそうではなく apache の directory index 設定で変更できます。

余談ですが、phpinfo は開発時、モジュールの追加などで期待値が得られない場合の確認に便利ですので、ちょいちょい使うかと思います。

まとめ

最初に、書き始めから長い月日が経ちました。
書き始めからバージョンを少し変えるも間に合いそうになく、最悪サポートが終了する日には投稿しようと思ってました。
無事、間に合いませんでした!

と言う事で、本稿はここまでとなります。
本稿で基本的な開発環境構築は終了です。
流行には全く乗っていませんが、誰かの役に立てば幸いです。

次回からこの環境を元に関連した情報を載せていきたいと思っています。
自分のペースで。