PHPはウェブサービスを作るためのスクリプト言語
インターネット上のウェブサイトなどでは、ウェブページで様々な情報を提供しています。これらウェブページはHTMLファイルで作られていて、ユーザーがウェブサーバー上のHTMLファイルにアクセスすることで、そのHTMLファイル上に書かれた文字や写真をだれでも閲覧できます。しかしこれらは静的コンテンツで、アクセスした人たちは同じものを見る事になります。
これに対して、アマゾンなどを代表とするようなショッピングサイトなどでは閲覧者がただ見るだけではなく、ショッピングカートに商品を入れて買い物をしたり、気に入った商品を登録したり、アクセスした人がそれぞれサービスを受けられるような仕組みのウェブサイトもあります。また、TwitterやFacebookのようなSNSではそれぞれ個々の画面が用意されていて、アクセスした人ごとに全く違う画面が表示されます。
このようなユーザーに情報だけでなくサービスを提供するような動的な仕組みを作るときにPHPを利用します。
WEBサーバーにPHP機能を追加する
インターネット上でWEBサービスを提供するにはWEBサーバーが必要です。WEBサーバーが起動していれば、静的ウェブサイトはHTMLファイルをドキュメントルートに置いておくことで、ユーザーがそのサイトにアクセスすることでウェブページが表示されます。PHPを利用するには、このウェブサーバーにPHPをインストールして、ウェブサーバーに機能を追加する旨の設定を追加しなければなりません。
今回はLinuxベースのRaspberry Pi OSで起動しているWebサーバーにPHP機能を追加する方法をご紹介します。
Webサーバーがnginxの場合
新しい機能やアプリケーションを起動するときには必ずupdateとupgradeは行っておきましょう。その後に以下のコマンドでphpのインストールが可能です。
$ sudo apt install php-fpm
PHPのインストールは以上です。あとはWEBサーバーの設定を変更します。設定ファイルは /etc/nginx/sites-enabled というフォルダ内の「default」というファイルを書き換えます。
$ cd /etc/nginx/sites-enabled
設定ファイルの書き換えはサイト管理者の権限が必要ですので、sudoで実行します。万が一設定を間違えた場合のためにコピーを取っておくこともおすすめします。今回はnanoエディタで編集します。
$ sudo nano default
nanoエディタで開いたのち、indexファイルにどのような拡張子を許可するかを設定するラインがありますので、ここにindex.phpを追記します。index と index.htmlの間に index.phpを記述して保存します。
次にPHPでFastCGIも使えるように設定しておきます。FastCGIとは、外部のプログラムとウェブサーバーを繋ぐ仕組みで、許可することでPHPプログラムがウェブサーバーと連携して他のプログラムをウェブサーバーに繋ぐことができるようになります。
以下の文字列を探して、その下の「#」を削除して設定を有効にします。
# pass PHP scripts to FastCGI server
以下のように削除します。
nanoエディタは「Ctrl」+「O」キーで書き込みとなります。書き込みファイル名が画面下に表示されたら「Enterキー」を押せばこれで書き換えが完了です。
PHP動作の確認
設定ファイルをいじったらnginxを再起動しておきます。
$ sudo /etc/init.d/nginx reload
次に、動作を確認するためには、phpファイルをドキュメントルートに作成します。ドキュメントルートは「/var/www/html」になりますので、そこに移動して、nanoエディタでindex.phpファイルを作成します。
$ cd /var/www/html
$ sudo nano index.php
これで、index.phpという空のファイルが開いていますので、ここに以下のphp構文を書き加えて保存します。
<?php echo phpinfo(); ?>
保存したら、このindex.phpファイルにアクセスしてみます。
ブラウザを起動して、URL入力欄に「localhost」と入力してEnterすると以下の画面が表示されます。
ここには、インストールされているphpの設定ファイルの位置やバージョン情報などが掲載されています。
このindex.phpが表示されていればPHPは動作しています。
ラズベリーパイでよくあるWEBサーバーの再起動失敗
ラズベリーパイ3など、少し前のラズベリーパイでnginxウェブサーバーを起動していると、再起動に失敗する場合などがあります。この場合、「Failed to start a high performance web server and a reverse proxy server (意味:高パフォーマンスなウェブサーバーとプロキスサーバーの起動に失敗しました。」のようなエラーが表示されて、何度やっても失敗する場合があります。設定ファイルの記述ミスが主な原因ですが、ラズベリーパイのような非力なウェブサーバーの場合、他に正常に終了していないプロセスなどが残っている状態で、nginxサーバーの再起動などを行おうとしてもうまくいかない場合があります。
その場合はRaspberry Pi OS自体を再起動してみてください。設定ファイルが間違えていなければ、多くの場合起動してきます。
Webサーバーに特化した形で利用する場合にはなるべく軽量化して、GUIなどの重たい処理は終了してしまうのが良いでしょう。