PHP入門 ≫ 基礎知識

基礎知識も必要

PHPを学習するためのとりあえずの基礎知識です。
右端の単語をクリックするとそれぞれ詳細説明が出ます。

注)当サイトの他の講座と多少内容が重複しています。


必要ない人は次へGo!



PHPって?

PHPはプログラム言語の一種です。
そもそもプログラムって何よ?って人のために・・・

コンピュータは色々な仕事をしてくれます。
が、勝手にやってくれちゃうわけではなくて、人間が命令した通りの動きを正確に実行してくれるのです。かと言って、命令すればなんでもできるわけではありません。
決められた通りの事しかできません。
この決められた通りの事をやらせるために、これまた決められた命令方法で指示を出してコンピュータに作業してもらうわけです。
この命令指示の一連がプログラムということになります。

この時の命令の書き方ってのが色々ありまして、それがプログラム言語です。
PHPはその一種で、わりととっつきやすい言語だと思います。


例えば、「あるファイルを読んで、少しだけ中身を変換して出力したい」 場合、各プログラム言語でこの作業を実行するプログラムを書いて、実行させればいいのです。

さてさて、このPHP言語で書いたプログラムの中身(ソースコード) をPHPスクリプトといいます。
で、このPHPスクリプトは単体ではただのファイル・文字の羅列です。
これを思う通りに動かすためには、phpというソフトウェアを実行します。

PHPスクリプトはPHPによって実行されます。

PHPはこのコードを前から一行一行実行します。こういう風に実行される言語をインタープリタ型言語といいます。

<?php

echo "hello";  実行順1
echo "php";   実行順2

?>

このプログラムの場合、最初に「echo "hello";」が実行されて、次に「echo "php";」が実行されます。

PHPは

php [オプション] スクリプトファイル名 引数

で実行します。


オプション


PHPは様々なオプションを付けて実行することができます。
複数のオプションを付ける時、

php -l test.php
と指定します。

よく使うオプション
-cphp.iniファイル指定
-iphpinfoの実行結果を表示
-l文法チェック
-f実行ファイル指定(省略可)
-hヘルプ
-rコマンドラインからスクリプトを入力
-mモジュール一覧表示
-vバージョン情報


-lだけは覚えておきましょう。一番よく使います。


プログラムを動かす準備

phpのプログラムを動かす一番単純な方法は、コマンドプロンプトから実行することです。 ここではコマンドプロンプトと、その操作方法を学習しておきましょう。

そもそもコマンドプロンプトとは何か?

いまどきのPCの操作はマウスとキーボードを使って行う事ができます。
何かソフトを使いたいなら、そのアイコンをダブルクリックすれば起動できます。
PCの操作は、このように視覚的にウィンドウシステムを使って操作するほかに、コマンドプロンプトでコマンドと呼ばれる命令文を使って操作することもできます。

コマンドプロンプトとは、PCへの操作を文字入力だけで行うための画面です。

まず、[スタート]->[すべてのプログラム]->[コマンドプロンプト] を開いてみて下さい。Windowsのバージョンによっては[スタート]->[コマンドプロンプト]になります。なければ探してください。

こんなん出ましたか?
Windowsのバージョンによっては少し違うと思います。

さて、この

C:\Users\usr\>

の次に白いカーソルが点滅しています。ここにコマンド(命令)を打ってエンターキーを押します。

そうすることにより、プログラムを実行したりディレクトリを移動したりすることができます。

この”C:\Users\usr\>”というようにカーソルの前に表示されている部分をプロンプトといいます。
この部分は環境によって最初に表示されるものに違いがあります。が、大体はこの値かと。最後のusrとは、PCにログインしたユーザ名になっているはずです。

ディレクトリの区切り

コマンドプロンプトで見ると、ディレクトリの区切りは「¥」の半角文字です。
ですがHTMLで「¥」の半角文字を見ると「\」になってしまうので、このサイトでの説明もすべて「\」になります。おなじものだと思ってください。

が!

ホームページ作成の「基礎知識も必要」の「ファイルとディレクトリ・パス」でも説明したように、ディレクトリの区切りは本来「/」です。

色々歴史的な問題があったゆえの結果なんですが、とりあえずPC上での区切りは「¥」の半角文字、UNIXなどサーバ上での区切りは「/」を使う事が多いです。


普通は、このプロンプトはカレントディレクトリを表示してくれています。
カレントディレクトリについてはホームページ作成の「基礎知識も必要」の「ファイルとディレクトリ・パス」を参考にしてください。

すると、今この状態だと『ドライブCの下のUsersディレクトリの下のusrディレクトリ)』にいることになります。

移動してみましょう。
まず、

C:\Users\usr> dir

と入力してリターンを押しましょう。なにかずらずら出てきたでしょう。

C:\Users\usr> dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は XXXX-XXXX です

C:\Users\usr のディレクトリ

2018/01/16 15:39 <DIR>   .
2018/01/16 15:39 <DIR>   ..
2013/09/03 22:44 <DIR>   local
2017/03/14 17:36   166 text.txt

これが”C:\Users\usr”のディレクトリの情報です。当然人によって違います。
前から、ファイル(ディレクトリ)作成日・時間・ファイルの大きさ(ディレクトリの場合は”<DIR>”と表示)・ファイル(ディレクトリ名)が一つずつ表示されます。

移動できるのはディレクトリなので、下に移動できるディレクトリがあれば、そこに移動してみましょう。

C:\Users\usr> cd local

または

C:\Users\usr> cd .\local

などとやると、カレントディレクトリが変化するので、今度はプロンプトが

C:\Users\usr\local>

となります。
”.”は自分のディレクトリを表します。

一つ上に戻ってみましょう。

C:\Users\usr\local> cd ..

C:\Users\usr>

”..”は一つ上のディレクトリを表します。

相対パス移動
今までやったのは相対パス移動です。
もちろん

C:\Users\usr> cd local\test

という様に複数のディレクトリを一気に移動したりできます。
また、先ほどやったdirコマンドも、

C:\Users\usr> dir local

等というように相対パスで指定したディレクトリの情報を出すことができます。
dirコマンドだけですと、カレントディレクトリの一覧が表示されます。


絶対パス移動
さて、絶対パスとは、”\”で始まるパス形式です。よって、

C:\Users\usr> cd /


C:\Users\usr> dir /windows

とやればいいわけです。

ですが、 パソコンには大抵の場合、ドライブというものが存在しています。
”C”とか”D”とか・・・少なくとも今時のマシンではほぼ複数のドライブが存在します。
コマンドプロンプト上でドライブを移動するには、

C:\Users\usr> D:\tmp

等と指定してもできません。
このドライブごとにルート”\”が存在していることになるので、一度ドライブを移動しなければなりません。

C:\Users\usr> D:

とやります。移動するドライブ名のあとに続いて”:”を打ってリターンします。
すると、

D:\>

この様に移動できます。あとは絶対パスだろうが相対パスだろうが自由にこのドライブ内を移動してください。

しかし、ディレクトリ情報を表示するdirコマンドは別にドライブを移動する必要はありません。

D:\> dir C:\windows

とやればできます。ただし、ドライブ名に続いて絶対パスで指定する必要があります。

コマンドは大体次の3っつを知っていれば十分です。
● dir ディレクトリの情報を表示
● cd ディレクトリ移動
● C: ”ドライブ名:”でドライブ移動

他のコマンドに関しては、必要になったら調べて使ってください。


どうやって実行するの?

[スタート]->[コントロールパネル]->[システムとメンテナンス]->[システム][システムの詳細設定]から[詳細設定]タブを選択した画面の右下にある「環境変数」をクリックします。
で、下の一覧の中に「Path」という変数がないでしょうか?ここを選択して[編集]を押すと、設定画面が出てきます。
PathとPATHは同じです。
[ユーザの環境変数]のほうもPathがありますが、「システム環境変数;ユーザ環境変数」という形になるので、先に設定したシステム環境変数の値の方が優先になります。
一応ユーザ環境変数のほうにしておくのが無難でしょうが、自分は面倒なのでシステム環境変数で。どちらもかまいません。

色んなディレクトリが”;”で繋がれて出てきませんか?
この複数の各ディレクトリのすぐ下にあるプログラムは、コンピュータ内のどこのディレクトリにいても実行できるのです。

これはコマンドプロンプトからも確認できます。

C:\Users\usr> echo %PATH%

とやると、色々な値が出てます。
これは上のPATHの一覧と同じはずです

※PATHについてはCGI講座の基礎知識「実行パス」で説明してあります。

例えば、Windowsに標準でついているテキストエディタのメモ帳ですが、プログラム名はnotepad.exeです。
これは、通常C:\Windowsの下にあります。エクスプローラーで探してみましょう。 エスプローラーからファイル名をダブルクリックするとメモ帳が立ち上がりますが、コマンドプロンプトから

C:\Users\usr> notepad

とやっても起動します。
これは、環境変数PATHにnotepad.exeのあるディレクトリC:\Windowsが追加されているから、カレントディレクトリがどこであっても、システムが環境変数のパスの中からnotepad.exeがあるディレクトリを順に探っていき、C:\Windows下にあったので、それを実行したのです。

PHPのインストールが無事に終了していれば、ここにはPHPのパスも含まれます。
もしPHPをC:\php72にインストールしていたら、

C:\php72\php.exe

が出来ているはずです。これがphp本体です。
PHPのパスとは、C:\php72\php.exeになります。
php.exeがあるディレクトリ「C:\php72」を環境変数PATHに追加することで、PHPへのパスが通っている、という言い方をすることもあります。

前にphpスクリプトはphpによって実行されると説明しましたが、 実際にはコマンドプロンプトから

C:\> C:\php72\php test.php

または

C:\> php test.php

(”test.php”はphpスクリプトの書かれたファイル名です)
ってな風に実行します。
上の方法は絶対パスで指定した方法です。

下はPATHを利用した方法です。通常、こちらの方法を使います。
もし、PATHの中にPHPのパスがない場合、他のディレクトリからだと

C:\> php
'php' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

等と怒られます。
こちらのほうが一般的なので、もしもPATHが上手く通っていない場合は、環境変数PATHの値を確認して、使えるようにしておいてください。




実際にプログラムを動かしてみましょ

試しに自分で作ったPHPプログラムを実行してみましょう。

まず、テキストエディタで新規ファイルを作ります。
テキストディタは、Windowsに標準でついているメモ帳などのエディタソフトです。
フリーで使いやすいものがたくさんあるので、自分で使いやすいものを用意しておきましょう。個人的おすすめはTeraPadです。

よく使うようならショートカットを作成してデスクトップ上に置いておくのもいいでしょう。


では、PHPスクリプトを書きましょう

PHPは、

<?php

?>

で書かれた部分の間だけ、PHPのプログラムを実行します。



中身を書く
中身を書いていきましょう。

<?php

echo 'Hello!';

?>

または

<?php

echo <<<EOM
Hello!
EOM;

?>

と書いて下さい。どちらでもやることは同じです。単に文字列を出力してるだけです。 (注意:”EOM;”だけ書いてある行は、”EOM;”の前後に空白等入れないで下さい。)

保存
名前を付けて保存しましょう。test.phpとでもしておきましょうか。
このとき、拡張子なしで保存すると拡張子がtest.txtとなってしまうので、きちんと拡張子まで指定しましょう。もし間違えてしまったらエクスプローラーから名前を変更します。
今回は”D:\temp”ディレクトリに保存しておくことにしましょう。みなさんはお好きなディレクトリに。
ディレクトリがない場合は新規に作ってください。 このとき、保存するディレクトリを覚えておいてください。

コマンドプロンプト
コマンドプロンプトを立ちあげて、”D:\temp”ディレクトリまで移動してください。

C:\Users\usr> D:

D:\> cd temp

D:\temp> dir

で先ほど保存したtest.plは一覧の中にあるか確認しましょう。

文法チェック
実行の前に文法チェックしましょう。 phpの実行オプションとして、文法チェックの-lを付けて実行します。

エラーと警告と注意

PHPのプログラムを実行すると、問題がある場合はエラーと警告と注意の3種類が表示されます。

エラー Error
警告 Warning
注意 Notice

エラーの場合はプログラム自体動きませんが、警告や注意の場合大抵うごきます。
警告とは、エラーほどじゃないけど、ここはちょっと直したほうがいい、という内容です。注意はそのままでもほぼ問題ないことです。

これらの内容を表示するかしないかは、設定によります。
-lオプションは文法チェックなので、明らかな文法間違い以外は表示されません。警告も注意も実行時に表示されます。

警告や注意は無視してもいいんですが、ログに貯まって重くなるし、キレイなプログラムを書くために、なるべく警告や注意も気にするようにしましょう。


D:\temp> php -l test.php
No syntax errors detected in test.php

となればおっけー。
これは、「このディレクトリにあるtest.phpの文法チェックをするためにphp.exeで実行しろ!」というコマンドになります。

何か間違いがあると、注意されます。
たとえばechoをech等としてみましょう。

D:\temp> php -l test.php
Parse error: syntax error, unexpected ''Hello!'' (T_CONSTANT_ENCAPSED_STRING) in test.php on line 3

怒られました。「構文エラー。3行目なんかヘンだよ」と言われています。
エラーの内容は、間違いの内容ズバリを言ってくれる場合ばかりとは限りません。line 3とあっても、3行目ではなくその周辺に間違いがある可能性もあるので、これはカンを働かせるしかありません。

実行
文法チェックが終わったら実行しましょう。

D:\temp> php test.php
Hello!

となったでしょうか?
これは、文字列「Hello!」を表示するプログラムなので、うまくいったことがわかります。
実行は「php -f test.php」と実行するプログラムファイル名の前に-fオプションをつけたとしても同じです。-fは省略可能なため、実際はあまり使いません。

ファイルの指定
さて、phpスクリプトは

php [オプション] スクリプトファイル名 引数

で実行します。
それぞれの項目の間は半角スペース一個以上あけてください。

このスクリプトファイルは絶対パス指定だろうと相対パス指定だろうと、ドライブを超えて指定しようとも全て実行できます。

C:\> php D:\temp\test.php
Hello!

実際は、スクリプトファイルのあるディレクトリまで移動して、そこから実行するのが楽です。


CGIとPHPの関係は?

先にCGI講座のCGIについてを見た人なら、すでにCGIとPHPの関係を理解していると思いますが、ここでおさらいです。先に↑を見ておいてください。

CGIなんて使わないぜ!ってなひとは読み飛ばしてください。

実際のところCGIで使いたいためにPHPを学習する人が多いと思います。

PHP自体はプログラミング言語の1つで、PHP言語で書いたプログラムをPHPのインタープリタで実行することで、プログラムが動いて、コンピュータに何か処理をさせることができます。

この仕組みをWebサーバ上に置くことで、ブラウザからのアクションによって、サーバでプログラムを実行して、何か処理をさせ、結果をブラウザに返すことができます。これがCGIです。
CGIは、PHPを利用した仕組みといえます。(CGIは他のプログラム言語を使うこともできます)

PHPのプログラムでは、<?php ?>の間のみPHPとして実行します。それ以外の部分はそのまま出力します。

例えば、phpで普通に文字列をちょっと出力したいだけなら

<?php

echo 'Hello!';

?>

これでいけます。出力先は、この場合実行したコマンドプロンプト画面です。
このプログラムをそのままCGIとして、ブラウザに表示させることもできます。

が!

CGIの場合、実際ブラウザで表示するのは基本的にHTMLになるので、PHPの処理だけでなく、HTMLも書かないといけません。

また、通常CGIのプログラムはこんな単純なものではありません。
PHPの文法も細かく覚えないとかけないので、そのためにPHPを学習します。
学習しているときは、学習項目ごとに作ったプログラムを、コマンドプロンプトを通して実行しましょう。
※ローカル環境であれば、いきなりブラウザで実行して勉強してもいいかと思います。

ある程度言語に慣れたら、CGIに使えるようなプログラムを書いていきます。
CGIの場合は、CGIとしてのプログラムを書いて、まずは文法チェックし、そこからブラウザで試すことを心がけてください。

そのほかの情報として、PHPのモジュール版とCGI版について知っておくといいかもしれません。CGI講座の実物を見る(PHP)を参考にしてください。


環境によって動作が違うんですが!?

PHPは、各種設定をphp.iniというファイルの中で行っています。
これは、基本的にはPHPのインストールディレクトリの中にあるはずです。

C:\php72\php.ini

とかにあります。
何かあると、この値を変更します。
でもって、PHPをCGIで動かす場合は、php.ini変更後は必ずApacheを再起動する必要があります。

これ鉄則!大事です!
忘れないようにしてください。

このphp.iniなんですが、いつくも設定の違うものを作っておいて、-cオプションで実行時に読み込むphp.iniを指定して実行することができます。

が!

PHPの違うバージョンをいくつもインストールしてたりすると、どこにあるphp.iniが実際に使われてるのか不明なことがあります。確認するためには、phpinfoを使います。

次のような内容のPHPファイルを作ってみましょう。

<?php

phpinfo();

?>

info.phpとします。これをブラウザ上で実行すると、次のようなものが表示されます。実行しているPHPの情報です。

こんなのが出てきます。
この中で、

Loaded Configuration File

という項目があります。これが、実際に使われているphp.iniになります。
phpinfoで出る情報は、基本的な設定や利用できるモジュールの確認とかでも利用することができます。

PHPをCGIで使う場合、apacheの設定ファイルhttpd.confのなかの設定

PHPIniDir "C:/php72/"

この下にあるphp.iniを読み込んでいます。
PHPのバージョン違いをいくつかインストールしておいて使い分けることもできます。
Apacheでどれを使うかは、↑の設定と、「LoadModule php5_module "C:\php\php5apache2_4.dll"」の設定を変更して再起動すれば、選んだバージョンのPHPで実行されます。


コマンドプロンプトから直接phpinfoを使うこともできます。

C:\Users\usr> php -i | more
phpinfo()
PHP Version => 7.2.11
:

これでもphpinfoの結果表示できます。
ここで実行するPHPは、環境変数Pathで一番最初に有効になる場所のPHPです。
phpinfoの情報は長いのでmoreでちょっとずつ出しているます。リターンキーを押せば次々表示されます。


ページのトップへ戻る