コンテンツにスキップ

PHP/確実に動作させるまで

出典: フリー教科書『ウィキブックス(Wikibooks)』
< 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 が正常に動いているか確かめるには、ブラウザを開き、アドレスバーに

http://localhost

と入力します。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)。

http://localhost/aisatu.php

にウェブブラウザーから接続します。 すると、

こんにちは

と表示されているはずです。 こうなったら、大成功です。

なお、サーバーにおいて、そのフォルダに入れると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のプログラミングが始まります。