PHP/確実に動作させるまで
- ※ 現状、PHPの教科書では用いてないですが、他の教科書でXAMPPやApacheの解説をするのに用いる可能性があるので、本ページは削除しないでください。
『WinSock』や『CGI』などが参照する可能性があります。
XAMPPを使う場合
[編集]PHPの設定
[編集]ここでは、XAMPPで環境を作った方向けに解説します。
Windows日本語版のSHIFT-JISの文字コードに対応する場合、下記のような設定が必要かもしれません。
ですが、そもそもアップロードするファイルの文字コードをUTF-8にしておけば、下記の設定は不要かもしれません。
XAMPPのインストール先のフォルダのPHPのフォルダ内(デフォルトでは C:\xampp\php) にある php.ini をメモ帳で開きます。
1860行目付近にある記述の
;mbstring.language=Japanese
の先頭の ; をとります。
mbstring.language=Japanese
1044行目付近のタイムゾーン設定を
date.timezone = Asia/Tokyo
にします。
- Linuxの場合
Linuxの場合、そもそもXAMPPのフォルダは、
/opt/lampp
として、「lampp」の名称である。
ドキュメント・ルート(Document Root、そこに入れたhtmlなどがブラウザからアクセスできるようになる)の場所は
/opt/lampp/htdocs
である。
どうやら、xamppをインストールすると、既存の「opt」フォルダの中に新しく「lampp」フォルダが作成され、さらに「lampp」フォルダの中に「php」フォルダなどが作成される。
コマンド端末で、
sudo /opt/lampp/lampp start
を実行すれば、xampp(lampp)が起動する。
これらのフォルダの所有者は、初期設定では root になっているが、しかし、root のままだと作業しづらいので(たとえばマウス操作でのファイルのコピーすら出来無い)、 なので今後のhtml作成とテストのさいの編集作業を楽にするため、ひとまず
sudo chown ログインユーザ名 /opt/lampp sudo chown ログインユーザー名 /opt/lampp/htdocs
のように権限を変更しておくとラクである。
chown とは、所有者(オーナー owner)変更のunixコマンド。
XAMPPのApacheで見るwebサイトは、htmiで文字コードを
<meta charset="UTF-8">
のように meta タグで指定しないと、なぜか日本語が文字化けするので(Fedora32 で2020年4月26日に確認)、文字コードの指定の必要がある。
Xampp版Apacheの起動
[編集]Linuxの場合、Xampp やlampp がインストールされてるなら、上記のコマンドを参考にして、Xampp(lampp)を起動してください。
- (※ 編集注: この段落内容がxampp実機で見当たらない。バージョンが違うのか?) Apache を起動するには、
- XAMPPのコントローラーを開き、上にあるApacheのStartボタンをクリックします。
(※ 編集注: 上の段落は無視しても、そのまま下記の手順でlocalhostにアクセスしても、「sudo /opt/lampp/lampp start」さえしてあれば、ブラウザのページで XAMPP と表示される。)
Apache が正常に動いているか確かめるには、ブラウザを開き、アドレスバーに
と入力します。XAMPPと表示されれば成功です。
「localhost」とは、あなたの今使っているブラウザの入っているパソコンにあるサーバーの事であり、つまり、あなたの今使っているパソコンのことです。「localhost」という言い方は、PHPだけにかぎらず、サーバー業界で、一般的な用語として使われます。
「localhost」は、これからサーバー用プログラムを開発するときに、一時的に使うための、パソコン内サーバーのようなものです。
なぜ、わざわざ自分のパソコン内にサーバーを設けるかというと、いきなり外部のサーバーにアップロードするのは大変なので、まず、普通のデスクトップパソコンで、プログラムの挙動を確認しようとしているわけです。
そして、PHPはサーバーで動くためのプログラムなので、自分のパソコンの中にも、サーバーを一時的に作ってあげることで、PHPを動かせるようにして、PHPプログラムを確認しようとするのが、これから私たちのしようとする作業です。
(Localhostのwebページの右下の「日本語」をクリック)(※ 編集注: LinuxのFedora26でXamppインストールして確認したところ、文字列「日本語」は見えない。)
XAMPPなどを使わない場合
[編集]『CGI』で説明したように、Linux などで Apache などを個別に設定しても可能です。なお、CGIを使わなくてもApacheでPHPの使用は可能です。というか、Apacheで標準設定されているPHPを使うことを、けっして「CGI」とは言わないです。
Apacheの起動コマンドは
systemctl start httpd
です。解説について詳しくは、リンク先ページにて、この起動コマンドでページ内検索をして、説明を探してください。
なお「systemctl」は、Linuxにインストールされているsystemdというランチャー機能のあるツールのコマンドですので、もしOSがsytemd以外の他のツールをシステム管理に使っている場合、サーバ起動コマンドが違うかもしれません。
Apacheにかぎらず、systemdでサーバを起動するコマンドは
systemctl start サーバ名
です。「httpd」とは、Linux界隈での Apache の呼び名です。
プログラム例
[編集]まず、下記のように、phpのプログラムを書きます。ファイル名は test.php で保存してください。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8"><html>
<title>こんにちは</title>
</head>
<body><?php
echo "Hello World!", "<br>";
echo "こんにちは", "<br>";
?></body>
</html>
- まだ、ウェブブラウザでは読み込みません。FireFox や Google Chrome などで開こうとしても…
このファイル形式はサポートしていません。
- のようなダイアログがポップアップするなど、期待通りに表示されません。
このphpファイルを、/var/www/html/
以下に保存すると、PHPインタープリターによって 。phpファイルからHTMLが生成され、ウェブブラウザでレンダリングが可能になります。
/var/www/html/
は、Filesystem Hierarchy Standard (FHS)で定められてはいませんが、多くのUnixとUnix互換OSで、ウェブコンテンツのロケーションとされています。
root権限だと作業しづらいので、まずコマンド
sudo chown ユーザー名 /var/www/html
で、ドキュメントルートの所有者を変えます。
その後、そこに上述のHTMLコード書いて入れます。
- この例は、FollowSymLinks を有効にしている
ついでに、マウス操作でアクセスしやすいようにショートカット(Linuxでは「シンボリックリンク」)を作りましょ。 シンボリックリンクのコマンドは
ln -s /var/www/html
です。
ブラウザで http://localhost/test.php にアクセスして、
Hello World! こんにちは
と表示されれば、とりあえずは成功です。(まだまた、ルーターの設定とか、ポートの設定とか、外部公開するには、いろいろとある。)
次に、こうして表示できたウェブページを保存してみましょう。通常のウェブブラウザでの保存方法と同じで、メニューバーの「ファイル」にある「名前をつけてページを保存する」サブメニューなどを押してください。すると、html形式での保存になっています。
実は、ブラウザに送る前の時点で、すでにhtml形式に変換されています。(でないと、セキュリティホールになる。)
ウェブアドレス名に「localhost/test.php 」とついているので、いかにもphpファイルを閲覧しているかのように錯覚しがちですが、しかし、このウェブアドレスのときにウェブブラウザで閲覧しているのはhtmlファイルです。
このように、無事にphpファイルがhtmlファイルに変換されて(まだローカルサーバー上ですが)公開されていることが、わかります。
Linuxの場合、ターミナル(コマンド端末)で、
$ ln -s /var/www/html /home/ログインユーザー名
と ln
コマンドを 引数-s
で使うと、ショートカット(Linuxの場合、「シンボリック・リンク」という)を作れます。
すでにホームフォルダで作業してるなら、単に
ln -s /var/www/html
でもシンボリックリンクを作成できます。
ログインユーザー名の部分には、あなたのLinuxパソコンでのLinuxインストールで作成したユーザー名を入力します。
これだけだと、ショートカット先がrootユーザーになってて編集が面倒なので、
sudo chown ログインユーザ名 /var/www/html
で所有者をログインユーザに変更するとラクです。
さて、ショートカット先(シンボリックリンク先)でphpファイルを作成したあと、所有者がrootになっていたりしたら、
sudo chown ログインユーザ名 /var/www/html/ファイル.php
で所有者をログインユーザーに更新できます。
ApacheがどのバージョンのPHPを動かしているのか等の確認は、たとえばtest.phpを下記のように書き換えて、
- phpinfo.php
<?php phpinfo(); ?>
- ブラウザから http://localhost/phpinfo.php でアクセスすることでバージョンや諸設定などを確認できます。
- この設定のまま外部に公開しないでください。
phpinfo()
を外部に晒すことは、脆弱性の有無の情報を攻撃者にあたえてしまいます。
XAMPPでのPHP の動作
[編集]基本
[編集]まずは、Windows のフォルダを開き、「登録されている拡張子を表示しない」というチェックをはずします。(はずしかたは、分からなければインターネットで調べてください。)
テキストエディタ(Windows 附属のメモ帳でもOKです。)を開き、
<?php
print "こんにちは";
?>
と入力して、XAMPPのフォルダのhtdocs フォルダの中に "aisatu.php" という名前(拡張子に注意!!)で 保存(デフォルトでインストールした場合、C:\xampp\htdocs)。
にウェブブラウザーから接続します。 すると、
こんにちは
と表示されているはずです。 こうなったら、大成功です。
なお、サーバーにおいて、そのフォルダに入れるとwebブラウザから見れるフォルダのことを「ドキュメント・ルート」といいます。
この C:\xampp\htdocs というフォルダ位置が、Windowsにおける XAMPP でのドキュメントルートです。
Windows環境では、メッセージ中の日本語「こんにちは」の部分が文字化けする場合がありますが、その場合、Windows付属のメモ帳で文字コードを UTF-8 に変更して保存してから、再度webブラウザで閲覧してみてください(きっと文字化けせずに成功するハズです)。(なお、フリーソフトのテキストエディタだと文字コード変換の機能が無い場合もあるので、起動するのはWindows付属『メモ帳』のこと。)
できない時の理由と対処法
[編集](XAMPP のインストール時にインストール先をデフォルトにしておけば、問題はおそらくおきません。)
「こんにちは」が表示できない場合、下記のような原因が考えられる。
- XAMPPインストール時、PHPのチェックを外した。
- -> 再インストール
- Xampp版 Apache が起動していない。起動の仕方を間違えている、など。
- -> XAMPP コントローラを開き、Apache の部分で、Start ボタンを押す。(そのとき、ほかのプログラムを Stop している必要がある (MySQL など))
- 拡張子が .php ではない。
- -> .php になおす。
- htdocs に保存していない。
- -> htdocs に保存する
- アドレスが間違っている。
- -> http://localhost/ファイルの名前.php にアクセスできているか確認する。
最後に
[編集]これで、設定は終わりです。 ここから、PHPのプログラミングが始まります。