2022 ソフトウェア設計及び演習用の班Wiki

22::gr04::PHP

PHPの利用

PHPのプログラムに必要な環境

 なぜPHPと呼ばれているのだろうか、Hypertext Preprocessorというこの言語は、HyperText Markup Languageの補助的な役割を担うものとして開発された。C言語を手本の一つにしているらしく、文法がよく似ている。

 PHPファイルの感覚的な位置づけはHTMLファイルと変わらない。PHP in HTML, HTML in PHP のように 片方のファイルの中にもう一方を組み込む形で使うことができる。(HTMLファイル内でJavaScriptを記述する際に使った"<script></script>"のように、"<php?></php>"というタグが存在する。)

 よって、作るのは簡単だと意気込んで作るが、うまくいかない点が出てくる。実行できないのである。世の中の動的なwebサイトのほとんどすべてにはPHPのプログラムが組み込まれており、頭のいいChromeやEdge、FireFox、safari等のウェブブラウザは、たとえローカル環境にPHPの環境がなかったとしても何ら問題なくwebページの表示をしてくれる。しかし、自身でプログラムしたPHPファイルの出力はしてくれない。これは、PHPが動作する仕組みに理由がある。

 

PHPの仕組み

 PHPを動かすには2つの方法がある。

  ・ローカルにPHPの環境を設定する。
  ・PHPを動かせるサーバーにPHPファイルを置く。

 ひとつめは、当たり前に動作するのが分かるだろう。
 ふたつめについてだが、サーバーにファイルを置くことで、サーバーがPHPの処理をしてくれるため、PHPの実行環境がないローカルなブラウザでの表示(実行)が可能になる。

PHP、サーバー、ブラウザの関係性

  • ブラウザ:読み込んだファイルの形式を判断して、HTMLファイルを処理し出力する。PHPにリクエスト。
  • PHP:動作としては文字列を格納し、文字列の吐き出しを行っているらしい。ブラウザにレスポンス。
  • サーバー:PHPの処理。PHPとブラウザのリクエストとレスポンスの動作を命令する。
基本的にブラウザはHTMLファイルしか処理しないため、PHPが組み込まれている場合はサーバーに送る。受け取ったサーバーはPHPをHTMLとしてつくりなおしブラウザへ返す。ブラウザは受け取ったHTMLファイルをもとに出力する。

おそらく以下のようなことが行われていると自分は理解している。 スクリーンショット 2022-07-09 013012.png

実行方法(コマンド)

 最後に実行方法について。
HTMLファイルの実行のようにプログラムファイルのパスをURL欄にペーストしてもPHPファイルは実行されない。先ほど述べたように環境の整っていないローカルでは処理できないからだ。しかし、PHPの環境が整っているサーバーにファイルを置くことで、ブラウザ出力の時点ではHTMLファイルに置き換わってくれる。

 今年度は、張先生による4年生のデータベースの講義でmysqlとPHPを使うため、環境が整ったサーバーがあるとのことで、そのサーバーをお借りし、mysqlとPHPによるソフトウェア設計が可能となった。
 実行する手順は次の通り。

1.esdbサーバーに入る。
  • 使用するサーバーは、学内のesdbサーバー。
  • 端末を起動
    →コマンド"ssh esdb.cis.iwate-u.local"を入力。
    →パスワードを入力すればアクセス完了。
2.自分のホームディレクトリの下に、"public_html"というディレクトリを作る。
3.public_htmlディレクトリの中に、実行ファイルを入れる。
 public_htmlディレクトリは、ホームページ用のファイルをアップロードするディレクトリ。このディレクトリ内に転送されているホームページ(ファイル)や画像のみが、ブラウザでアクセスした際に表示される。public_htmlディレクトリ以外にファイルをアップロードしても、ホームページ用のファイルとしては認識されず、表示(閲覧)することはできない。逆にブラウザーから表示(閲覧)されたくないファイルやディレクトリは、public_htmlディレクトリ以外に転送することで、隠しファイル、隠しディレクトリを設けることが可能。
4.webブラウザを立ち上げ、URL欄にファイルの絶対パスを入力する。

"http://esdb.cis.iwate-u.local/~s062..(学籍番号)/ファイル名"

活動後の記述

  • ページ遷移時のエラーについて
    • phpのスタック機能を用いてカート機能の実装を目指しましたが、今回導入したセッション機能はどうやらesdbサーバとのセキュリティの関係でうまく行かないようです…詳しい原因まではわかりませんでした。
    • 別の手法でもう少し時間があれば、と悔しい思いでいっぱいですが、現時点の最高到達点にはたどり着けたと思います。
  • 来年度以降の方へ
    • カート機能目的のMySQLのデータベース設計とPHPセッション管理は並行して行うことをおすすめします
    • 我々はデータベース完成→カート機能導入  の順で開発し、奇跡的にphpタグが干渉しないコーディングで進めていたため最後の追い上げで仕上げることができました。
    • 何事にもそうですが、MySQLの導入にはなるべく早めによろしくおねがいします。


最終更新日:2022/08/02 14:12:18