独り言

プログラミングの講師をしています。新人研修で扱う技術の解説と個人の技術メモ、技術書の紹介など

【PHP】PHP入門(環境構築)

PHPは、数あるプログラミング言語の中でも比較的に動作させやすいプログラミング言語です。
しかし、PHPの動作環境は多くあるため、ここで簡単に比較しつつまとめてみます。

目次

PHP単体でインストール

PHPは公式サイトから最新バージョンをダウンロードできます。
https://www.php.net/downloads.php
ただし、PHPは本来Webアプリケーション開発用の言語であり、PHP単体で動作させることはほとんどありません。
コマンドからの実行もできますが、Webサーバー上で動作させ、Webアプリ用開発言語として使用します。
そのため、PHPの開発環境構築では、単体でのインストールよりも、WebサーバーやDBとセットになっている環境をそのままインストールする方法が主流です。

PHPを単体でインストールする場合は、別途Webサーバーの環境を用意する必要があります。
Webサーバーは、Apache、Nginx、IISなどがあります。
LinuxMacの場合はApacheやNginxを別途インストールして、PHPを動作させます。
Windowsの場合は、ApacheやNginxを別途インストールするか、IISの機能を有効化して、PHPが動作するように設定する必要があります。

XAMPPについて

PHPの開発環境でよく利用されるのはXAMPP(ザンプ)環境です。
https://www.apachefriends.org/jp/index.html
昔、LAMPP(LinuxApacheMySQLPHPPerl)と呼ばれる、LinuxPHPを動作させるための環境が流行しました。
それがLinuxに限らず、WindowsMac環境でも利用できるようになった環境がXAMPPです。
Webサーバー(Apache)が付随しているため、インストールすればすぐにPHPを動作させることができます。
また、DB環境(MySQL, MariaDB)の環境もセットになっているため、DBを利用する本格的なWebアプリの開発をする場合でも環境構築の手間が最小限ですみます。

MAMPについて

XAMPPはMac環境用もありますが、MacではXAMPPとは別でMAMPという開発環境もあります。
https://www.mamp.info/en/windows/
MAMPは有償版(MAMP Pro)と無償版があります。
有償版では使用できる機能が増えますが、無償版でもXAMPPと比べても遜色はないと個人的には思うので、学習用や小規模な開発向けであれば無償版でも十分に使えます。
ちなみにMAMPWindowsでも使用可能なようです。
Windows版は私は使用経験がないので使い勝手の程はわかりませんが。。

MAMPMAMP Proの違い、XAMPPとMAMPの細かい違いなどは私も詳しく把握していません。
気になる方は他のサイトで調べながら自分にあっているもの、使いやすそうなものを選んでください。
※個人的にはMacでのXAMPPはGitとの連携で苦労した経験があるので、Macの時はMAMPを使っています。

私はWindowsではXAMPP環境を、MacではMAMP環境を利用したことがありますが、小規模な開発においては使い勝手として大きな違いはないように感じます。
デフォルトのポート番号や、DB環境でのrootユーザーのパスワードなど、細かい違いはいくつかありますが。

XAMPP・MAMPのインストールと動作確認

XAMPP, MAMP, どちらも、インストーラをダウンロードして指示に従ってインストールすれば簡単にインストール可能。
XAMPPでもMAMPでも、インストールが完了したら、コントロールパネルが起動できるようになる。
(XAMPP, MAMPで検索するとアプリが出てくるはず)
コントロールパネルから、サーバーの起動や停止などが行える。
PHPを動作させるには最低限Webサーバー(Apache)が動いている必要がある。
XAMPPの場合はApacheを選んでスタートさせる。
MAMPの場合はStart ServerでApacheMySQLが起動する。

XAMPPやMAMP環境でのドキュメントルートは、
インストールディレクトリ/htdocs
になります。
このディレクトリの中に「index.php」を作成すれば、
http://localhost:ポート番号/
でアクセス可能。
index.php以外のファイル名であれば、
http://localhost:ポート番号/phpのファイル名
でアクセス可能。
デフォルトのポート番号はXAMPPは80(なので指定不要)、MAMPは8888。設定で変更可能。

テキストエディタIDE

開発を行う時にはテキストエディタIDE統合開発環境)が必要です。
主流なエディタ・IDEとしては、

などがあります。
私はVS Code派。
VS CodeEclipseは無料で使用可能。
PHPStormはライセンスが必要。1ヶ月は無料で使用可能。

VS CodePHP用のカスタマイズ

インストールした直後は英語なので、日本語にする場合には「Japanese Language Pack」をインストールします。
また、PHPの開発をしやすくするために「PHP IntelliSense」の拡張機能をインストールします。
あとはお好みで調べながら便利そうな拡張機能をインストールしておく。

設定ファイル

PHPを動作させる上で関係してくる設定ファイルは

などがあります。

httpd.conf

Apacheの設定ファイルです。
MAMPの場合、
Application/MAMP/conf/apache/httpd.conf
にあります。

設定でよく使用するのは
DocumentRoot
の設定。

DocumentRootは、URLで
サーバー名:ポート番号
にアクセスした時にアクセスされるディレクトリ。

デフォルトでは
DocumentRoot "/Applications/MAMP/htdocs"
になっている。
この時、サーバー名:ポート番号でアクセスしたときには
/Applications/MAMP/htdocs/index.html
/Applications/MAMP/htdocs/index.php
あたりが実行、表示される。

php.ini

PHPの設定ファイル。
ファイルの場所はMAMPの場合は Applications/MAMP/bin/php/php<バージョン>/conf/php.ini
XAMPPの場合は
C:¥xampp¥php¥php.ini

phpinfoの画面で確認できる。

環境構築の時に変更する可能性の高い設定としてはdisplay_errorsがある
PHPのプログラムでエラーや警告が発生した時に画面に表示するかどうかを設定する。
本番環境の運用の場合は、エラーが表示されてしまうとプログラムやDBの情報がユーザーに知られてしまう可能性があるため、Offにしておくべき。
開発環境では、バグを見つけやすくするためにOnにしておいた方が開発効率が良い。

error_reportingで、エラーの出力レベルを設定できる。
潜在的な不具合を生まないためには警告なども表示された方が良いので、E_ALLにして全部表示される設定にしておくのが良い。

.htaccess

Webサーバーをディレクトリ単位で制御するためのファイル。
リダイレクト、ベーシック認証、エラーページの作成などが行える。
Webサーバー全体の設定はhttpd.confで行うが、ディレクトリ単位で設定を上書きしたい場合は、.htaccessを使う。
必要なければ使わなくても大丈夫。

CentOSPHPをインストール

Linux環境(CentOS)をインストールする手順です。

# Apacheのインストール
$ sudo yum -y install httpd
# サービス起動
$ sudo systemctl start httpd
# 起動確認
$ sudo systemctl status httpd
# 自動起動設定
$ sudo systemctl enable httpd


# PHPのインストール

# 古いバージョンがインストールされている場合はアンインストールする
$ sudo yum remove php*

# EPELパッケージをインストール
$ sudo yum install epel-release
# Remiパッケージを追加
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# PHPインストール
$ sudo yum install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt
# バージョン確認
$ php --version
# Apache再起動
$ sudo systemctl restart httpd