PHPの動作確認

これまでの作業で、Webサーバ(Apache)とPHPについて、インストールと設定が完了しました。
それでは、PHPがWebサーバ上で動作するか確認してみましょう。
ここで行う作業は、PHPの動作を確認するにはとても有効な方法です。
WebサーバやPHPを再インストールした場合などにも、確認手段として使える方法ですので覚えておくと便利です。

① 確認用プログラムの作成
メモ帳などのテキストエディタに以下ののコードを入力して、以下のファイル名で保存します。
なお 、入力するコードはすべて半角文字で入力してください。

01 <?php
O2 phpinfo();
O3 ?>

② Webブラウザでの確認
Webブラウザから以下のURLにアクセスして正常に表示されるかどうか確認します。

http://localhost/phpinfo.php


PHPを動かすには?

PHPを動かすために必要なソフトウェアについての説明です。

① テキストエディタ
PHPのプログラムを入力するために使います。
Webアプリケーションの開発を行う場合は、最低でも文字エンコーデインクが設定でき、改行コードも設定できるといった機能が搭載されたエディタを使う必要があります。

② FTPクライアント
ファイルをWebサーバに転送するために使います。
開発用コンピュータとサーバが同じコンピュータの場合は不要です。

③ Webブラウザ
Webサーバにアクセスして、Webサイトを閲覧するために使います。

④ PHP
PHPプログラムを動かすエンジンとなるソフトウェアです。
皆さんを始め開発者が作ったPHPのプログラムは、このPHPエンジンによって解析、実行されます。

⑤ FTPサーバ
FTPクライアントソフトウェアを使ってサーバにファイルを転送するには、サーバ側でFTPサーバソフトウェアが動いている必要があります。
開発用コンピュータとサーバが同じコンビュータの場合は不要です。

⑤ Webサーバ
Webブラウザからの要求を受け付けて、PHPなどのプログラムの実行結果やHTML文書などをWebブラウザに応答として返すソフトウェアです。


.htaccess とは

.htaccess という名前のファイルは、ユーザの認証、Apache の設定や PHPの設定をディレクトリ単位で設定することができます。
Apache の設定や PHPの設定 を行う際は、通常 Apache の設定ファイルである httpd.conf と、PHPの設定ファイルである php.ini に書かれている設定項目から、上書きしたい頃自のみを .htaccess ファイル内に記述することにより .htaccess を配置したフォルダ以下の設定を上書きすることができます。
ただし、全ての設定項目を .htaccess 内で変更できるわけではないことに注意が必要です。
.htaccess で PHPの設定変更可能な項目は、「http://www.phppro.jp/phpmanual/php/ini.html」にある表の変更の可否欄で「PHP_INI_ALL」と 「PHP_IN_I_PERDIR」の項目です。
また、「PHP_INI_ALL」の設定項目はPHPスクリプ卜内から ini_set 関数で設定を変更することができ、「PHP_INI_SYSTEM」の設定項目は php.ini 、httpd.conf でしか設定ができません。

また、PHPスクリプ卜内で文字コードを変更できますが、スクリプトを実行するたびに設定を記述するのは面倒です。
.htaccess ファイルを使用した方が、より簡単で広範囲に文字コードを設定できますので、試してみると良いでしょう。


日本語の文字化けの理由

PHP側での設定が原因ではなく、MySQL側の設定ミスでPHPとMySQLを連携させたときに文字化けを起こす場合もあります。

ここで、PHPでの入出力時の文字化け対応方法について説明します。
PHPには、文字コード関連設定を変更する方法が用意されています。
PHPの入出力が原因での文字化けの場合、下記の3種類の方法で文字コード、を変更できます。

① php.ini の文字コード設定部分を編集して設定する方法
② .htaccess で文字コード設定部分を追加して設定する方法
③ PHP のスクリプト内で設定を変質して設定する方法

まず、PHPの設定ファイル 「php.ini」を変更すると、そのサーバ内に存在するすべての PHP スクリプ卜に変更内容が反映できます。
すべて同じ設定に変更しでも問題がない場合には php.ini ファイルで変
更することをお勧めします。
一方、「.htaccess」で設定を変更すると、.htaccess ファイルを設置したフォルダ、以下の階層すべての PHP スクリプ卜で反映されます。
Webアプリケーションのプロジェク卜ごとに文字コードを使い分けたい場合には、.htaccess で設定するといいでしょう。
最後に、PHP スクリプ卜内に設定を記述する方法では、PHP スクリプ卜が実行されているときのみ、その設定が有効となります。
このように、それぞれの特徴を把握した上で、用途にあった方法を使用するようにしましょう。


Webサーバの役割

PHPの基礎を解説する前に、WebブラウザとWebサーバのやり取りについて詳しく解説します。このやり取りの中には Webプログラミングをする上で知っておくべき内容が含まれます。ツールを使って
このやり取りを覗いてみます。

Webサーバは HTTP のリクエストを受けて、HTMLを出力します。
HTTPヘッダから見るWebブラウザとApache間の通信について、Webページにアクセスする場合、Webブラウザのアドレス欄にURLを入力しますが、このように Webブラウザを通じて Webページを要求することを「HTTP リクエスト」と呼びます。HTTPリクエス卜は、インターネットを介して、世界のどこかにある Webサーバにたどり着き、Webサーバ内にインストールされているApache がその要求の受付けを行います。

要求を受け取ったApacheは、URLを解析して、要求された HTML ファイルなどをWebブラウザに返信(レスポンス)します。このWebブラウザとWebサーバとの間で行われるやり取りの中には、みなさんの自には通常見えない 「ヘッダ」と呼ばれる情報が含まれています。ヘッダ情報は HTTP リクエストや HTML のレスポンスを行う中で、WebブラウザとWebサーバが、会話をするための大切な仕組みです。


PHPを使ってWebアプリケーションを作成し実行する(Apacheのダウンロード)

CENT OS7(Linux)がインストールされたら、Virtual Boxの画面左上にさきほど
名前をつけたLinuxの名前が表示されていますので、その名前を選択後、画面上部にある緑色の矢印の
「起動」をクリックしてください。

するとLinuxが起動されますので、rootユーザーでログインしてください。

・補足説明:Virtual Boxの便利な機能であるスナップショットを使いこなそう!

Linuxが起動してしまえば、ApacheのダウンロードさらにはPHPのダウンロード、
データベースも使うのであればMySqlまたはPostgreSqlのダウンロードもすべてLinux上で
行うことが出来ます。

rootユーザーは特権ユーザーと呼ばれていてLinuxに対してすべてのことが出来ますので、時には
コマンドのうち間違えでLinuxが起動しなくなってしまうこともあります。

ですので、そんな時はVirtual Box上でLinuxが動いていますので、Apacheの
ダウンロードおよびインストール前やPHPダウンロードおよびインストール前、さらには
MySqlまたはPostgreSqlダウンロードおよびインストール前にスナップショットを取っておくと良い
でしょう。

スナップショットというのはその時、その時のLinuxの状態を丸ごとバックアップしてくれる
ので、写真をとるような感覚でスナップショットを取っておき、スナップショットの名前に
「これは何を行う前に取ったスナップショットなのか?」がわかるようにしておくと良いでしょう。

・補足説明:rootユーザーについて
LinuxでもWindowsパソコンのようにログインした後に操作が行えるようになりますが、
その中でもrootユーザーはスーパーユーザーとも呼ばれ、Linuxに対して全てのことが行える
特権ユーザーです。今回のようにいろいろなソフトウェアをインストールする時や特別なことを
行う時のみrootユーザーを使用します。


フォーム要素に規定値を設定する時に

 スクリプトから、フォーム要素に既定値を設定することも可能です。ユーザーが入力した 値やデータベース から取得した値を復元するのによく使うテクニックなので、ぜひとも理解しておきたいところです。

 テキストボックスやテキス卜エリアのように、既定値をvalue属性や要素の本体で表せばよいものは簡単で、既定値をそのままタグに埋め込むだけで完了です。

  <textarea>要素の配下には余計な空白や改行を入れないように注意しましょう。

少し複雑なのは、ラジオボタンや選択ボックスなど、 選択オプシヨンを持つフォーム要素の場合です。ラジオボタンやチェックボックスでは、 checked属性の付いた<input>要素が、選択ボックスやリストボックスでは selected属性の付いた<option>要素が、それぞれ既定値となります。

 これらのフォーム要素では、上のようにひとつひとつの選択オプションに対して、既定値とvalue属’性の値が同等かを判断し、同等のものに 対してchecked/ selected 属性を付けます。 最初見たときには多少複雑に見えるかもしれませんが、既定値を設定する場合の大切な基礎ですので、きちんと理 解しておきましょう。


セッションを使うための設定

php.iniには、セッションの挙動をカスタマイズするためのさまざまな設定が用意されています。ここでは、その中でも特に大切と思われるパラメータを挙げておきます。すべてを理解する必要はありませんが、「こんなものもあるんだ芯」という程度に目を還しておいてください。

(1) session.auto startパラメータ
先ほど、「セッシヨンを使うには、あらかじめsession_start関数を呼び出しておく」という説明をしました。しかし、個々のページで毎回、session start関数を呼び出すのは面倒です。もしもほとんどのページでセッションを利用しているならば、session.auto startパラメータをOnに設定してもよいでしょう。これによって、すべてのページで自動的にセッションが始まるようになります。

(2) session.save_path パラメータ
セッションは、デフォル卜でデータをファイルに保存します。session.save_pathパラメータは、セッションの保存先を表すパラメータです。ごとで指定したパラメータが存在しない場合、セッション関係の操作は失敗しますので注意してください。

また、保存先には「/tmp」フォルダのように、サーバー上の他ユーザーが自由にアクセスできるよう芯場所は避けた方が無難です。セッションを乗っ取うれる原因となる可能性があるからです。既定値は 「C:¥xampp¥tmp」です。
(3) session.gc_maxlifetimeパラメータ
セッションに保存したデータは、必ずしもsession unset関数などで明示的に削除されるとは限りません。プログラマーが後始末していないとともあるでしょうし、ユーザーが勝手にブラウザを閉じて、アブリを強制終了してしまうとともあるでしょう。そのような場合に、セッシヨンは破棄されないまま、サーバーに永遠と残り続けるのでしょうか。

いいえ、そのようなととはありません。セッションにはあらかじめ有効期限(session.gc_maxlifetime パラメータ)が設けられています。デフォルトは 1440秒 (=24分)で、ここで指定された時間以上アクセスがないと、そのセッションデータはゴミとみなされ、自動的に破棄されます。


ブラクインのインストール

Eclipseの開発元であるEclipseFoundationでは、英語以外の言語に対応させるために「ランゲージパック」と呼ばれるソフトウェアを配布しています。通常は、これを利用して日本語化を行います。

そこで、今回は、サードパーティによる「Pleiades」(プレアデス)という日本語化プラグインを利用することにします。これは、既に3.5Galileoにも対応しており、ほとんどの表示を日本語化できます。またEclipseだけでなく、各種のプラグイン(PHPのものも含めて)もかなりの部分を日本語化することができるというスグレモノなのです。これは以下のURLにて配布されています。

<span style=”color: #0000ff;”>http://mergedoc.sourceforge.jp/ </span>

ここから左側にある「PIeiades]のリンクをクリックし、現れたページの「Pleiades本体ダウンロード」というところにある「最新版」のリンクをクリックしてください。これがもっとも新しいパージョンです。ただし、常にマイナーパージョンアップを行っていますので、何らかの不具合がある可能性もあります。もし、何らかのトラブルがあった場合には、「安定版」のリンクをクリックして、こちらをダウンロードするとよいでしょう。

1.ますPleiadesを入手します。

2.このフォルダを開くと、中に「plugins」 「features」というフォルダが見つかります。

これらのフォルダ内にあるファイルやフォルダを、それぞれEclipse本体のある場所にある同名のフォルダ内にコピーします。つまり、Pleiadesの「plugins」内のものをEclipseの「plugins」内へ、Pleiadesの「features」内のものをEclipseの「features」内へ、とコピーするわけです。

3.Eclipse本体のある場所に「eclipse ini」というファイルがあります。これをテキスト工デイターで開いてください。ただし、これはLinux/UNIXの改行コードに対応したものを使う必要か.あります。Windows付属のものでは、メモ帳は使えません。ワードパッドを使ってください。

4.ファイルを開いたら、その末尾を改行し、以下の文を追記して保存してください。

<span style=”color: #0000ff;”>-javaagent:plugins/jp.sourceforge.mergedoc.pLeiades/ pleiades.jar </span>

これでPleiadesのインストールは終了です。次にEclipseを起動したときから、Pleiadesにより日本語化されて表示されるようになります。

現在このサイトでは、あらかじめEclipse本体に必要なプラグインとPleiadesを組み込んである「All-in-one」パッケージの配布も行っています。これはいくつかのパッケージが用意されており、利用するPHP開発のためのプラグイン「PDT」を組み込みPleiadesで日本語化しであるパッケージも用意されています。これをダウンロードすれば、面倒なインストール作業は一切不要、ダウンロードしてすぐに使い始めることができます。


「for 文」で、

1つの処理をX回繰り返す『ループ」という発想

「5日分」や「10人分」をまとめて処理する仕組みは、どのように考えれば良いでしょうか。プログラミングの世界では、「1つの処理を×回繰り返す」と考えるのがポイン卜です。つまり、「5日分の日付を表示する」や「10人分の名簿を印刷する」は、次のように表現します。

このような「処理の繰り返し」は、まとまったデータを処理するときに重要な考え方です。同じところをグルグル回っているイメージなので「ループ」や「ループ処理」とも呼ばれます。ルプ処理はrs日分の日付を表示する」や「10人分の名簿を印刷する」のように繰り返し回数が明確な場合だけでなく、「ファイル全体を表示する」や「すべての都道府県名を一覧表示する」など、何かをすべて処理するような場合にも共通する重要な概念です。

繰り返す回数を指定できる仕組みがあれば便利

処理の繰り返し(ループ)という仕組みを意識して、5日分の日付表示を整理しましょう。「何を」「いつまで」繰り返すのかがポイントです。5日分の日付表示は次のようにまとめることができます。

5日分の日付表示を整理

何を繰り返すのかーー1日分の日付表示

いつまで繰り返すのか一一5回(5日分)

「何を」「いつまで」繰り返すかについて、プログラミングしやすいように書き換えていきましょう。if文やswitch文でも()や()を使って条件や処理を記述しましたが、ここでも、( )や( )を使って表現していきます。たとえば、( )の中に繰り返し回数を指定できる構文があれば便利ではないでしょうか。

このように記述できれば便利

処理を繰り返す(5回) {

1日分の日付表示

}